Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中查找两个日期时间字符串之间的差异_Javascript_Jquery_Date_Datetime - Fatal编程技术网

如何在Javascript中查找两个日期时间字符串之间的差异

如何在Javascript中查找两个日期时间字符串之间的差异,javascript,jquery,date,datetime,Javascript,Jquery,Date,Datetime,因此,我在javascript中有两个字符串: old_date = "2010-11-10 07:30:40"; new_date = "2010-11-15 08:03:22"; 我想找出这两个日期之间的差异,但我完全不知所措:( 我试着做到以下几点: old_date_obj = new Date(Date.parse(old_date)); new_date_obj = new Date(Date.parse(new_date)); 但它给了我错误。然而,这只是我不幸的开始……我需要

因此,我在javascript中有两个字符串:

old_date = "2010-11-10 07:30:40";
new_date = "2010-11-15 08:03:22";
我想找出这两个日期之间的差异,但我完全不知所措:(

我试着做到以下几点:

old_date_obj = new Date(Date.parse(old_date));
new_date_obj = new Date(Date.parse(new_date));
但它给了我错误。然而,这只是我不幸的开始……我需要表现出不同之处:

Difference is X Days, Y hours and Z minutes
JavaScript/jQuery大师能帮我吗?非常感谢

var old_date = "2010-11-15 07:30:40";
var new_date = "2010-11-15 08:03:22";

var old_date_obj = new Date(Date.parse(old_date));
var new_date_obj = new Date(Date.parse(new_date));

var diffMs = Math.abs(new_date_obj - old_date_obj);
var diffDays = Math.round(diffMs / 86400000); // days
var diffHrs = Math.round((diffMs % 86400000) / 3600000); // hours
var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // minutes

只需添加您的日期,它就会对您有效

“2010-11-10T07:30:40+01:00”

有关更多详细信息,请查看此答案


函数计算(){
old_date=“2010-11-10 07:30:40”;
新建日期=“2010-11-15 08:03:22”;
old_date_obj=新日期(date.parse(old_date,“dd/mm/yyyyy HH:mm:ss”);
new_date_obj=新日期(date.parse(new_date,“dd/mm/yyyyy HH:mm:ss”);
var utc1=Date.UTC(新建日期对象getFullYear()、新建日期对象getMonth()、新建日期对象getDate());
var utc2=Date.UTC(旧日期对象getFullYear()、旧日期对象getMonth()、旧日期对象getDate());
警报(数学楼层((utc2-utc1)/(1000*60*60*24));
}

//一天、一小时和一分钟内的毫秒数
var一天=1000*60*60*24;
var一小时=1000*60*60;
var一分钟=1000*60;
var old_date=“2010-11-10T07:30:40”;
var new_date=“2010-11-15T08:03:22”;
//将两个日期转换为毫秒
var old_date_obj=新日期(old_date).getTime();
var new_date_obj=新日期(new_date).getTime();
//以毫秒为单位计算差值
var差异=Math.abs(新日期对象-旧日期对象)
//转换回天、小时和分钟
var天数=数学四舍五入(差分/一天);
var小时=数学四舍五入(差分/一小时)-(天*24)-1;
var分钟=数学四舍五入(差分/一分钟)-(天*24*60)-(小时*60);
警报('差异为'+days+'days',+hours+'hours和'+minutes+'minutes');

函数getDates(strDate1、strDate2){
/*现在是strDate1和strDate2字符串。所以我们应该将它们转换为javascript日期时间值*/
var tempDate1=strDate1.split(/\-\124;\ s/)
var date1=新日期(tempDate1.slice(0,3).reverse().join('/')+''+tempDate1[3]);
var tempDate2=strDate2.split(/\-\124;\ s/)
var date2=新日期(tempDate2.slice(0,3).reverse().join('/')+''+tempDate2[3]);
var obj1=$.datepicker.parseDate('dd.mm.yy',$(“#date1”).val());
var obj2=$.datepicker.parseDate('dd.mm.yy',$(“#date2”).val());
日志(findDifferentDate(obj1,obj2));
}
函数findDifferentDate(obj1、obj2){
var date1=getFormattedDate(obj1);
var date2=getFormattedDate(obj2);
var year=date1.getFullYear()-date2.getFullYear();
var day=date1.getDate()-date2.getDate();
var month=date1.getMonth()-date2.getMonth();
var seconds=date1.getSeconds()-date2.getSeconds();
var minutes=date1.getMinutes()-date2.getMinutes();
var hour=date1.getHours()-date2.getHours();
返回“差值为”+“天”+“月”+“月”+“年”+“秒”+“秒”+“分”+“小时”+“小时”;
}
函数getFormattedDate(日期){
var year=date.getFullYear();
var month=(1+date.getMonth()).toString();
月=月。长度>1?月:“0”+月;
var day=date.getDate().toString();
天=天。长度>1?天:“0”+天;
返回日+月+年;
}

如果您使用日期调用getDates方法,那么您可以在控制台中看到时间差。

无论何时尝试操作日期,您都非常想了解时间差。了解一下:我建议您在处理此类问题时使用这个难以置信的轻量级库:(尤其是)这实际上是那个问题的重复…@JeremyThille:酷!我现在就去看它…奇怪的是结果是0:00:00,我想我需要更详细地检查一下moment.js。。。
<script>  
    function Calculate() {
       old_date = "2010-11-10 07:30:40";
        new_date = "2010-11-15 08:03:22";

        old_date_obj = new Date(Date.parse(old_date, "dd/mm/yyyy HH:mm:ss"));
        new_date_obj = new Date(Date.parse(new_date, "dd/mm/yyyy HH:mm:ss"));

        var utc1 = Date.UTC(new_date_obj.getFullYear(), new_date_obj.getMonth(), new_date_obj.getDate());
        var utc2 = Date.UTC(old_date_obj.getFullYear(), old_date_obj.getMonth(), old_date_obj.getDate());
        alert(Math.floor((utc2 - utc1) / (1000 * 60 * 60 * 24)));
    }
</script>
<script type="text/javascript">
    // The number of milliseconds in one day, hour, and minute
    var ONE_DAY = 1000 * 60 * 60 * 24;
    var ONE_HOUR = 1000 * 60 * 60;
    var ONE_MINUTE = 1000 * 60;

    var old_date = "2010-11-10T07:30:40";
    var new_date = "2010-11-15T08:03:22";

    // Convert both dates to milliseconds
    var old_date_obj = new Date(old_date).getTime();
    var new_date_obj = new Date(new_date).getTime();

    // Calculate the difference in milliseconds
    var difference_ms = Math.abs(new_date_obj - old_date_obj)

    // Convert back to days, hours, and minutes
    var days = Math.round(difference_ms / ONE_DAY);
    var hours = Math.round(difference_ms / ONE_HOUR) - (days * 24) - 1;
    var minutes = Math.round(difference_ms / ONE_MINUTE) - (days * 24 * 60) - (hours * 60);

    alert('Difference is ' + days + ' days, ' + hours + ' hours and ' + minutes + ' minutes.' );
</script>
<script type="text/javascript">
    function getDates(strDate1, strDate2) {
    /*Now strDate1 and strDate2 string. So we should convert them to javascript datetime value.*/
     var tempDate1  = strDate1.split(/\-|\s/)
     var date1 = new Date(tempDate1.slice(0,3).reverse().join('/')+' '+tempDate1[3]);
     var tempDate2  = strDate2.split(/\-|\s/)
     var date2 = new Date(tempDate2.slice(0,3).reverse().join('/')+' '+tempDate2[3]);
     var obj1 = $.datepicker.parseDate('dd.mm.yy', $("#date1").val());
     var obj2 = $.datepicker.parseDate('dd.mm.yy', $("#date2").val());
     console.log(findDifferentDate(obj1, obj2));
    }

    function findDifferentDate(obj1, obj2){
      var date1 = getFormattedDate(obj1);
      var date2 = getFormattedDate(obj2);
      var year = date1.getFullYear() - date2.getFullYear();
      var day = date1.getDate() - date2.getDate();
      var month = date1.getMonth() - date2.getMonth();
      var seconds = date1.getSeconds() - date2.getSeconds();
      var minutes = date1.getMinutes() - date2.getMinutes();
      var hour = date1.getHours() - date2.getHours();
      return 'Difference is' + day + 'Days' + month + 'Months' + year + 'Years' + seconds + 'Seconds' + minutes + 'Minutes' + hour + 'Hours';
    }

    function getFormattedDate(date) {
      var year = date.getFullYear();
      var month = (1 + date.getMonth()).toString();
      month = month.length > 1 ? month : '0' + month;
      var day = date.getDate().toString();
      day = day.length > 1 ? day : '0' + day;
      return day + '.' + month + '.' + year;
     }
</script>