GMT 和欧洲格式的日期之间的天数
Days between dates with GMT and europe format
我知道这个问题已经被问了一千次,但我试图让javascript向我显示两个日期之间的天数。我看过这篇文章:如何在javascript中获取两个日期之间的天数
从我使用的一条评论中,我使用了这段代码:
<input type="text" name="sod" class="startd" value="10/02/2016" />
<input type="text" name="dos" class="endd" value="12/02/2016" />
<script>
function treatAsUTC(date) {
var result = new Date(date);
result.setMinutes(result.getMinutes() - result.getTimezoneOffset());
return result;
}
function daysBetween(startDate, endDate) {
var millisecondsPerDay = 24 * 60 * 60 * 1000;
return (treatAsUTC(endDate) - treatAsUTC(startDate)) / millisecondsPerDay;
}
alert(daysBetween($('.startd').val(), $('.endd').val()));
</script>
javascript 中的 reulst 给出了 61 天,但我希望它读作 dd/mm/yyyy,而不是像现在这样读作 mm/dd/yyyy,所以结果应该是 2 天。
我尝试删除treatAsUTC部分,但它根本没有给出任何答案。
function daysBetween(startDate, endDate) {
var millisecondsPerDay = 24 * 60 * 60 * 1000;
return (endDate - startDate) / millisecondsPerDay;
}
alert(daysBetween($('.startd').val(), $('.endd').val()));
任何人都可以帮助或引导我朝着正确的方向前进吗?
提前谢谢。
伊恩
javascript 中的 reulst 给出了 61 天,但我希望它读作 dd/mm/yyyy,而不是像现在这样读作 mm/dd/yyyy,所以结果应该是 2 天。
因此,您只需要正确解析日期即可。原文是:
function parseDate(str) {
var mdy = str.split('/')
return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
它解析 m/d/y 格式的日期,因此要支持 d/m/y,只需将最后一行更改为:
return new Date(mdy[2], mdy[1]-1, mdy[0]);
稍微整理一下代码,你最终可能会得到这样的东西:
// Parse a date in d/m/y format as UTC
function treatAsUTC(s) {
var b = s.split(/'D/);
return new Date(Date.UTC(b[2], b[1]-1, b[0]));
}
function daysBetween(startDate, endDate) {
startDate = treatAsUTC(startDate);
endDate = treatAsUTC(endDate);
return (endDate - startDate) / 8.64e7;
}
function calcDiff() {
document.querySelector('#result').value =
(daysBetween(document.querySelector('#sod').value,
document.querySelector('#dos').value));
}
<input type="text" id="sod" class="startd" value="10/02/2016" />d/m/y
<input type="text" id="dos" class="endd" value="12/02/2016" />d/m/y
<br>
<button onclick="calcDiff()">Calculate difference in days</button>
<input type="text" id="result" readonly>Days
但是您实际上并不需要UTC,您只需对结果进行四舍五入即可。如果解析日期,毫秒只会在夏令时更改时消失,四舍五入到最接近的全天可以解决这个问题。但我想使用 UTC 很好,因为它不需要四舍五入。
相关文章:
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 如何用moment.js列出两个日期之间的所有月份
- moment.js在两个时区格式的日期之间存在差异
- 用时间戳获取两个不同日期之间的时间差
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 再次使用JavaScript计算两个日期之间的天数
- 在Javascript中计算两个日期之间的工作日,节假日除外
- 在Jquery或Javascript中获取两个范围或日期之间的通信周数
- 如何使用moment.js获取24小时内日期之间的时差
- 两个日期之间的差异
- JavaScript-计算两个日期之间的天数(包括结束日期)
- 夏令时期间不起作用的 2 个日期之间的小时差异
- v8::值到日期之间的转换
- 在ExtJS中获取开始/结束日期之间的日期
- 如何计算日期之间的差异
- 两个日期之间的月份差异,计算月份的最后日期
- JavaScript:获取MySQL时间戳和当前日期之间的天数差
- 从表列中检索日期,并根据从今天到日期之间的天数使行的颜色发生变化
- 获取两个日期之间的天数
- 计算日期之间的天数