JavaScript $.datepicker.formatDate 有偏移量?

JavaScript $.datepicker.formatDate With Offset?

我设法拼凑了一些 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);

以及两者之间的许多类似变体,none 其中似乎有效(所有这些都一起剥离日期格式或生成 NaN-undefined-NaN)。我认为我在 TimezoneOffset()*60*1000 方面走在正确的轨道上,我只是不知道它会去哪里。

有人能帮我指明正确的方向吗?提前感谢您的任何回复!

首先你得到一个 UTC 日期对象

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);