我正在尝试比较两个日期,这些日期是芬兰时间形式:dd.mm.YYYY或d.m.YYYY或dd.m.YYYY或d.mm.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>
此代码将尝试计算两个日期之间的差异,其中一个是今天.没有成功lolz.
提前致谢!
我的最终代码(感谢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); } }
解决方法
如果您的日期是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月份为零索引(1月为0,2月为1等等),所以月数必须减少一个,因此–s [1].
/编辑
要比较两个日期对象(即,以毫秒为单位),只需从另一个减去一个.如果您希望结果以天为单位,则除以一天中的毫秒数(以允许由夏令时引起的任何微小差异).
所以如果你想看看今天和一个日期之间有多少天,请使用:
function diffToToday(s) { var today = new Date(); today.setHours(0,0); return Math.round((toDate(s) - today) / 8.64e7); } alert(diffToToday('2/8/2011')); // -1 alert(diffToToday('2/8/2012')); // 365
PS. “芬兰”数据格式是世界绝大多数使用ISO格式日期的格式.