簡體   English   中英

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

兩者之間有許多類似的變體,但似乎沒有一個起作用(所有變體將日期格式全部剝離或產生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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM