javascript的日期时间比较和日期时间差异
我在简单的日期时间比较和日期时间不同方面失败了 我的输入来自jquery UI datetimepickerjavascript的日期时间比较和日期时间差异,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我在简单的日期时间比较和日期时间不同方面失败了 我的输入来自jquery UI datetimepicker var dt1 = $('#datetimepicker1').val(); //2012-08-12 13:49 var dt2 = $('#datetimepicker2').val(); //2012-08-14 14:21 if( (dt1!="") && (dt2!="") ){ var d1 = Date.parse(dt1); // return N
var dt1 = $('#datetimepicker1').val(); //2012-08-12 13:49
var dt2 = $('#datetimepicker2').val(); //2012-08-14 14:21
if( (dt1!="") && (dt2!="") ){
var d1 = Date.parse(dt1); // return NaN
var dd1 = new Date(Date.parse(dt1)); // return Invalid Date
var ddd1 = dt1.getTime() // added this, the entire script no functioning
alert (dt1 +":"+ d1 + ":"+ dd1 +"\n"+ ddd1);
}
有人知道我做错了什么吗?
首选javascript解决方案。按照问题中提供的格式尝试此方法
2012-08-12 13:49
要找出两个日期在天内的差异:小时:分钟你可以这样做
function ConvertMilliSecondsToTimeSpan(t){
var cd = 24 * 60 * 60 * 1000,
ch = 60 * 60 * 1000,
d = Math.floor(t / cd),
h = '0' + Math.floor( (t - d * cd) / ch),
m = '0' + Math.round( (t - d * cd - h * ch) / 60000);
return [d, h.substr(-2), m.substr(-2)].join(':');
}
var dt1 = Date.parse("2012-08-12 13:49");
var dt2 = Date.parse("2012-08-11 14:21");
alert("Difference: Days:Hours:Minutes " + ConvertMilliSecondsToTimeSpan(Math.abs(dt2 - dt1)));
var dt1=“2012-08-12 13:49”;
var dt2=“2012-08-14:21”;
如果((dt1!=“”)和&(dt2!=“”){
var d1=新日期(dt1.拆分(“”)。合并(“”);
var d2=新日期(dt2.拆分(“”)。加入(“”);
var diff=d2-d1;//以毫秒为单位的差异
//控制台日志(d1,d2,差异/(60*60*24*1000));
警报(d1);
警报(d2);
如果(差异>0){
警报(d1+在“+d2”之前);
}否则如果(差异<0){
警报(d2+“在”+d1之前);
}否则{
警报(d2+“在”+d1之前);
}
警报(算术平均值(差值/(60*60*24*1000)).toFixed(2)+“天”);
}
事实上,你的代码看起来像是真的,但事实并非如此。解析时 从字符串中,使用Date.parse可以使用字符串的格式。我试着把一切都提出来。 尝试传递以下格式的字符串 格式为:YYYY-MM-DDTHH:MM:ss.sssZ。“Z”部分表示可选时区。也可以使用子窗体:
<ol>
<li>YYYY
<li>YYYY-MM
<li>YYYY-MM-DD
<li>THH:mm // example: 'T12:00'
<li>THH:mm:ss
<li>THH:mm:ss.sss
</ol>
所以让我们把这个问题应用到你们身上。这对我来说是一个有用的输出 //var dt1 = $('#datetimepicker1').val(); //2012-08-12 13:49
// var dt2 = $('#datetimepicker2').val(); //2012-08-14 14:21
I realize that at least you are able to get dt1 and dt2 with values I assigned to date1 and date2, if so put the below code and see if you get the output .
var date1 ="2012-08-12 13:49";
var date2 ="2012-08-14 14:21";
var dt1=date1.split(" ").join("T");//2012-08-12T13:49
var dt2=date2.split(" ").join("T");//=>2012-08-14T14:21
if((dt1!="") && (dt2!="")){
alert(dt1);
var d1 = Date.parse(dt1); // return good output 1344768540000
var d2 = Date.parse(dt2); //return 1344943260000 Now you can compare d1 and d2 values
var dd1 = new Date(Date.parse(dt1)); // returned Sun Aug 12 2012 13:49:00 GMT+0300 (Egypt Standard Time)
var ddd1 = dd1.getTime(); // work fine 1344768540000 dt1 is a string can't work here
alert (dt1 +":"+ d1 + ":"+ dd1 +"\n"+ ddd1); // return 2012-08-12T13:49:1344768540000:Sun Aug 12 2012 13:49:00 GMT+0300 (Egypt Standard Time)
1344768540000
}
简单而清晰的方法,它不产生额外的js日期对象或需要任何解析
// get epoch of datepicker 1
var dt1 = $('#datetimepicker1').datepicker('getDate').getTime();
// get epoch of datepicker 2
var dt2 = $('#datetimepicker2').datepicker('getDate').getTime();
// ensure both evaluate to true
if(dt1 && dt2){
if(dt1 < dt2){
//dt1 is earlier
}else if(dt1 > dt2){
//dt1 is later
}else{
//dates are equal
}
}
//获取日期选择器1的纪元
var dt1=$('#datetimepicker1').datepicker('getDate').getTime();
//获取日期选择器2的历元
var dt2=$('#datetimepicker2').datepicker('getDate').getTime();
//确保两者的评估结果均为真
如果(dt1和dt2){
如果(dt1dt2){
//dt1更晚
}否则{
//日期是相等的
}
}
如果您发现自己正在使用datetime重的应用程序,请使用更灵活的API包装本机Date对象。试试。好的,根据您的建议,我可以进行比较,但如何使datetime不同?返回。。。d1=1344752760000 d2=1344753180000 d1-d2=420000将-
更改为/
。这是一个更容易接受的版本。e、 g.dt1=dt1.替换(/-/g,“/”)代码>如何在“注释”中复制和粘贴我的解决方案?在我粘贴的地方,它变成了-个字符?我按照你提供的格式做了,我用演示更新了我的答案。好的,日期比较完成了,日期时间的不同如何?基于diobe(上图)的解决方案,他的答案是day basic,我希望以相同的格式返回。例如000-00-02 01:29(2天1小时29分钟),我将其修改为inI,添加了代码,用于找出天的差异:小时:分钟,我希望这是您想要的。您的代码在@side运行良好,但是如果dt1和dt2来自具有datepicker的jquery UI的输入文本,则整个函数不可用,从您的代码来看,我确实找到了一些解决办法,谢谢,在这种情况下,其实很简单。您可以使用datepicker函数获取日期:很抱歉,我无法更改输入格式,因为它来自jquery UI datepicker。如果您按照您的注释获取dt1和dt2值,请在我尝试编辑代码时查看输出。我认为它对我来说100%有效。现在你可以比较d1和d2的值
//var dt1 = $('#datetimepicker1').val(); //2012-08-12 13:49
// var dt2 = $('#datetimepicker2').val(); //2012-08-14 14:21
I realize that at least you are able to get dt1 and dt2 with values I assigned to date1 and date2, if so put the below code and see if you get the output .
var date1 ="2012-08-12 13:49";
var date2 ="2012-08-14 14:21";
var dt1=date1.split(" ").join("T");//2012-08-12T13:49
var dt2=date2.split(" ").join("T");//=>2012-08-14T14:21
if((dt1!="") && (dt2!="")){
alert(dt1);
var d1 = Date.parse(dt1); // return good output 1344768540000
var d2 = Date.parse(dt2); //return 1344943260000 Now you can compare d1 and d2 values
var dd1 = new Date(Date.parse(dt1)); // returned Sun Aug 12 2012 13:49:00 GMT+0300 (Egypt Standard Time)
var ddd1 = dd1.getTime(); // work fine 1344768540000 dt1 is a string can't work here
alert (dt1 +":"+ d1 + ":"+ dd1 +"\n"+ ddd1); // return 2012-08-12T13:49:1344768540000:Sun Aug 12 2012 13:49:00 GMT+0300 (Egypt Standard Time)
1344768540000
}
// get epoch of datepicker 1
var dt1 = $('#datetimepicker1').datepicker('getDate').getTime();
// get epoch of datepicker 2
var dt2 = $('#datetimepicker2').datepicker('getDate').getTime();
// ensure both evaluate to true
if(dt1 && dt2){
if(dt1 < dt2){
//dt1 is earlier
}else if(dt1 > dt2){
//dt1 is later
}else{
//dates are equal
}
}