将两个日期与javascript或datejs进行比较(日期差异)

前端之家收集整理的这篇文章主要介绍了将两个日期与javascript或datejs进行比较(日期差异)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试比较两个日期,这些日期是芬兰时间形式: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格式日期的格式.

猜你在找的JavaScript相关文章