用javascript或datejs(日期差异)比较两个日期
Comparing two dates with javascript or datejs (date difference)
我正在尝试比较两个芬兰时间形式的日期:dd.mm.YYYY或d.m.YYYY或dd.m.YYYY或d.m.YYYY。
我很难找到如何做到这一点,我目前的代码将无法工作。
<script src="inc/date-fi-FI.js" type="text/javascript"></script>
<script type="text/javascript">
function parseDate() {
var date = $('#date').val();
var parsedDate = Date.parse(date);
alert('Parsed date: '+parsedDate);
}
function jämförMedIdag (datum) {
if (datum == null || datum == "") {
alert('Inget datum!');
return;
}
/*resultat = Date.compare(Datum1,Datum2);
alert(resultat); */
var datum = Date.parse(datum);
var dagar = datum.getDate();
var månader = datum.getMonth();
var år = datum.getYear();
var nyttDatum = new Date();
nyttDatum.setFullYear(år,månader,dagar);
var idag = new Date();
if(nyttDatum>idag) {
var svar = nyttDatum - idag;
svar = svar.toString("dd.MM.yyyy");
alert(svar);
return(svar);
} else {
var svar = idag - nyttDatum;
svar = svar.toString("dd.MM.yyyy");
alert(svar);
return(svar);
}
}
</script>
这段代码将尝试计算两个日期之间的差,其中一个是今天。No success .
提前感谢!
我的最终代码(谢谢RobG!):
function dateDiff(a,b,format) {
var milliseconds = toDate(a) - toDate(b);
var days = milliseconds / 86400000;
var hours = milliseconds / 3600000;
var weeks = milliseconds / 604800000;
var months = milliseconds / 2628000000;
var years = milliseconds / 31557600000;
if (format == "h") {
return Math.round(hours);
}
if (format == "d") {
return Math.round(days);
}
if (format == "w") {
return Math.round(weeks);
}
if (format == "m") {
return Math.round(months);
}
if (format == "y") {
return Math.round(years);
}
}
它不是完全准确的,但非常接近。我最后添加了一些插件来计算在天,周,月,年或小时,任何人都可以自由地复制和使用这个代码。
如果您正在使用Datejs和可选的time.js模块,您可以通过创建TimeSpan
对象使用以下代码运行您的计算:
// dd.mm.YYYY or d.m.YYYY
// dd.m.YYYY or d.mm.YYYY
var start = Date.parse("20.09.2011");
var end = Date.parse("28.09.2011");
var span = new TimeSpan(end - start);
span.days; // 8
当然,如果你真的想要更简洁的话,上面的代码可以简化成一行。
new TimeSpan(Date.parse(end) - Date.parse(start)).days; // pass 'end' and 'start' as strings
如果日期是d/m/y或其变体形式的字符串,则可以使用:
function toDate(s) {
var s = s.split('/');
return new Date(s[2], --s[1], s[0]);
}
您可能想要验证输入,或者不验证,这取决于您对所提供数据的一致性有多大的信心。
编辑回复评论
若要允许使用不同的分隔符(例如:句号(.)或连字符(-)),要进行分割的正则表达式可以是:
var s = s.split(/[/'.-]/);
日期将分别分为日期、月份和年份。这些部件被传递给Date构造函数,以便为该日期创建一个本地日期对象。由于javascript月份是零索引(一月是0,二月是1,等等),月份数必须减少1,因此--s[1]
。
/编辑
要比较两个日期对象(即以毫秒为单位),只需将其中一个减去另一个。如果您想要以天为单位的结果,然后除以一天中的毫秒数和四舍五入(允许日光节约引起的任何微小差异)。
如果你想知道从今天到某个日期之间有多少天,使用:
function diffToToday(s) {
var today = new Date();
today.setHours(0,0,0);
return Math.round((toDate(s) - today) / 8.64e7);
}
alert(diffToToday('2/8/2011')); // -1
alert(diffToToday('2/8/2012')); // 365
p。"芬兰"数据格式是世界上绝大多数不使用ISO格式日期的国家使用的数据格式。
使用Date
对象:
var today = Date.today();
var dateToday = Date.parse(today.toString('MMMM d, yyyy'));
var prevMonthDate = dateToday.addDays(-30);
var difference = (dateToday - prevMonthDate)/86400000;
console.log(difference); //will give you the difference in days.
相关文章:
- Javascript元标记日期比较和重定向
- javascript中的日期比较
- Node.js谷歌云平台数据存储日期比较
- Javascript日期比较奇怪的行为
- 不显眼的日期比较验证器
- 日期比较未按预期工作
- 使用 Javascript 进行日期比较
- 为什么我的日期比较函数会抛出错误
- Javascript日期比较很奇怪
- 高图表两个日期比较
- 日期比较出错
- 奇特的 JavaScript 日期比较输出
- Javascript日期比较错误
- 启动日期选择器日期比较错误(英国/美国格式错误)
- HTML将参数传递给javascript函数,然后javascript函数进行日期比较,然后javascript返回以H
- Javascript中的日期比较类似于字符串比较
- Javascript和SQLite中的日期比较
- 原生javascript中的ISO日期比较
- javascript + jquery中的日期比较
- 日期比较在某些浏览器中不起作用- Javascript