【问题标题】:Date is considering 31 days of month日期考虑每月 31 天
【发布时间】:2013-03-15 11:47:13
【问题描述】:

在处理日期差异时,当我以某种方式使用下面的代码时,函数假设所有月份都有 31 天。例如。如果我用 2 月 28 日减去 3 月 1 日,则差值为 4 天。有什么简单的方法可以解决这个问题。任何帮助将不胜感激。

function myFunction()
{

var sysdt = "02/28/2013";
var year = sysdt.substring(6,10);
var mon = sysdt.substring(0,2);
var date = sysdt.substring(3,5);
var n = Date.UTC(year,mon,date);



var userdt = "03/01/2013"
var yr = userdt.substring(6,10);
var mn = userdt.substring(0,2);
var dd = userdt.substring(3,5);
var n1 = Date.UTC(yr,mn,dd);


var x = document.getElementById("demo");
x.innerHTML=(n1-n)/(1000*24*60*60);

}

【问题讨论】:

  • 对于日期操作,您最好使用moment.js 之类的库,因为在处理日期时有很多陷阱

标签: javascript datetime


【解决方案1】:

这将为您提供两个日期之间的差异,以毫秒为单位

var diff = Math.abs(date1 - date2);

例如,它会是

var diff = Math.abs(new Date() - compareDate);

您需要确保 compareDate 是一个有效的 Date 对象。

这样的东西可能对你有用

var diff = Math.abs(new Date() - new Date(dateStr.replace(/-/g,'/')));

即将 "2011-02-07 15:13:06" 转换为 new Date('2011/02/07 15:13:06'),这是 Date 构造函数可以理解的格式。

你可以这样减去--

var d1 = new Date(); //"now"
var d2 = new Date("2011/02/01")  // some date
var diff = Math.abs(d1-d2);  // difference in milliseconds
var days = diff*24*60*60*1000;

【讨论】:

    【解决方案2】:

    您的代码实际上是从 4 月 1 日减去 3 月 1 日,因为 JavaScript 日期中的月份是从 0 开始的。

    【讨论】:

      【解决方案3】:
      var sysdt = "02/28/2013";
      var date1 = new Date(sysdt);
      
      var userdt = "03/01/2013"
      var date2 = new Date(userdt);
      
      var days = (date2-date1)/(1000*24*60*60);
      

      或在您的代码中从月份减去 1

      var sysdt = "02/28/2013";
      var year = sysdt.substring(6,10);
      var mon = sysdt.substring(0,2)-1; // months are from 0 to 11
      var date = sysdt.substring(3,5);
      var n = Date.UTC(year,mon,date);
      
      
      
      var userdt = "03/01/2013"
      var yr = userdt.substring(6,10);
      var mn = userdt.substring(0,2)-1; // months are from 0 to 11
      var dd = userdt.substring(3,5);
      var n1 = Date.UTC(yr,mn,dd);
      
      var days = (n1-n)/(1000*24*60*60);
      

      【讨论】:

      • 感谢您的快速帮助。
      猜你喜欢
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多