我试图使用JavaScript返回两个日期之间的周数.
所以我有以下变量:
var date = new Date();
var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();
if(day < 10) { day= '0' + day; }
if(month < 10) { month = '0' + month; }
var dateToday = day + '/' + month + '/' + year;
var dateEndPlacement = '22/06/2014';
Run Code Online (Sandbox Code Playgroud)
如果它们小于10,我也会将日期和月份的前缀加上0.不确定这是否是正确的方法...所以我们会欢迎其他想法.
然后我将这两个日期传递给以下函数:
function calculateWeeksBetween(date1, date2) {
// The number of milliseconds in one week
var ONE_WEEK = 1000 * 60 * 60 * 24 * 7;
// Convert both dates to milliseconds
var date1_ms = date1.getTime();
var date2_ms = date2.getTime();
// Calculate the difference in milliseconds
var difference_ms = Math.abs(date1_ms - date2_ms);
// Convert back to weeks and return hole weeks
return Math.floor(difference_ms / ONE_WEEK);
}
Run Code Online (Sandbox Code Playgroud)
但是我得到错误:
Uncaught TypeError: Object 04/04/2014 has no method 'getTime'
我有什么想法我做错了吗?
对于那些要求/要问的人,我正在调用这样的函数:
calculateWeeksBetween(dateToday, dateEndPlacement);
Run Code Online (Sandbox Code Playgroud)
您将日期存储为字符串 ( '22/06/2014')。getTime是一种方法Date。您需要Date为日期创建对象,并将它们传递给函数。
var dateToday = new Date(year, month - 1, day);
var dateEndPlacement = new Date(2014, 5, 22);
calculateWeeksBetween(dateToday, dateEndPlacement);
Run Code Online (Sandbox Code Playgroud)
正如@Mosho 所指出的,您也可以直接减去日期,而无需使用getTime.
我建议使用moment.js来做这种事情.
但是,如果你想在纯JavaScript中这样做,我会怎么做:
function weeksBetween(d1, d2) {
return Math.round((d2 - d1) / (7 * 24 * 60 * 60 * 1000));
}
Run Code Online (Sandbox Code Playgroud)
然后打电话给
weeksBetween(new Date(), new Date(2014, 6, 22));
Run Code Online (Sandbox Code Playgroud)
减去日期(未格式化,是自 1970 年 1 月 1 日 00:00:00 以来经过的秒数),除以 604,800,000(每周毫秒数)。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
| 归档时间: |
|
| 查看次数: |
8771 次 |
| 最近记录: |