JavaScript $.datepicker.formatDate 带偏移量?

标签 javascript jquery datepicker date-format

我成功地编写了一些 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/

相关文章:

javascript - 正则表达式查找不带扩展名的文件名,包括 tar.gz 等异常(exception)情况

javascript - 平滑滚动条不适用于主体元素

javascript - 使用 JS/jQuery 触发 React onChange 事件

jquery - 循环子 DIV 并获取 ID

javascript - jQuery datepicker-突出显示从日历中的日期选择器中选择的日期

javascript - 如何从具有不同嵌套的json中以指定方式对象值

javascript - 以模态打开pdf文件可能吗?

JQuery 代码不工作。我究竟做错了什么?回调、变量作用域、链接?

javascript - Ionic 3 typescript cordova DateTimePicker代码反向运行

javascript - 以编程方式在 jquery datepicker 上设置多个日期