2016-01-13 57 views
0

我已經成功地破解起來一些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天過去。谷歌告訴我,這是由於我的數據庫中沒有時區(僅限日期字段,時間不重要)中的時區偏移/日期設置爲UTC。

從我可以告訴我,我需要爲Date()的偏移量,但我無法弄清楚我的生活如何使用這種當前佈局。

我這裏有一個的jsfiddle: http://jsfiddle.net/ytaLvp5y/

如在的jsfiddle可以看出, 「2015年12月31日」 的日期爲 「30日 - 12月2015」 顯示了當使用「DD-M -yy「格式。

一些例子我上的是我曾嘗試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的正確軌道上,我只是無法弄清楚它到了哪裏。

有人能幫我指出正確的方向嗎?感謝所有迴應!

回答

1

首先你會得到一個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); 
+0

所有罰款和良好的紙張,但如何將其應用到$( 'span.date')。每個(函數(){VAR DATEFORMAT = $(本).text()?? – cwaddilove

+0

'$(this).text()'是'2015-12-31'正確嗎?只需替換。 – Jasen

+0

謝謝你給我足夠的細節迫使我學習:) - 更新http: //jsfiddle.net/ytaLvp5y/1/(我相信這最終是你提到的嗎?它確實有效) – cwaddilove