我成功地编写了一些 JavaScript,让我的日期按照我想要的方式显示:
$(document).ready(function () {
$('span.date').each(function() {
var dateFormat = $(this).text()
var dateFormat = $.datepicker.formatDate('dd-M-yy', new Date(dateFormat));
$(this).html(dateFormat + "<br>");
});
});
但是,它当前显示的是 1 天前的日期。 Google 告诉我这是由于我的数据库中的时区偏移量/日期被设置为 UTC,没有时区(仅日期字段,时间不重要)。
据我所知,我需要 Date() 的偏移量,但我无法弄清楚如何使用当前布局来做到这一点。
我这里有一个jsfiddle: http://jsfiddle.net/ytaLvp5y/
从jsfiddle中可以看出,使用“dd-M-yy”格式时,日期“2015-12-31”显示为“30-Dec-2015”。
我在 StackExchange 上找到的一些我尝试过的示例(请记住,我几乎没有 JavaScript 经验):
d.setTime( d.getTime() + d.getTimezoneOffset()*60*1000 );
以及
var dateFormat = $.datepicker.formatDate('dd-M-yy', new Date(dateFormat)*60*1000);
之间还有许多类似的变体,但似乎都不起作用(所有这些变体都一起剥离了日期格式或产生 NaN-未定义-NaN)。我认为 TimezoneOffset()*60*1000 我走在正确的轨道上,我只是不知道它去了哪里。
有人能帮我指出正确的方向吗?预先感谢您的任何回复!
最佳答案
首先你得到一个 UTC Date 对象
var date = new Date("2015-12-31");
接下来查找本地 TZ 的偏移量
var offset = date.getTimezoneOffset() * 60 * 1000; // milliseconds
现在将其添加到原始日期的毫秒表示形式中并创建一个新日期。
var myDate = new Date(date.getTime() + offset);
然后应用格式
$.datepicker.formatDate("dd-M-yy", myDate);
关于JavaScript $.datepicker.formatDate 带偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34756219/