2011-09-05 29 views
6

Tôi đang cố gắng xuất ra hàng loạt lần theo giờ (trên giờ) trong Javascript (vì vậy bên trong trình duyệt web như Firefox). Chuỗi thời gian này sẽ chồng lên nhau trong một ngày ngắn (mất một giờ vào mùa xuân) và ngày dài (tăng một giờ vào mùa thu). Kết quả tôi tìm kiếm là theo giờ địa phương, tức là áp dụng thời gian bù giờ và DST. Vì vậy, ví dụ, ở Anh chúng tôi có một giờ thiếu 1:00-01:59 vào ngày ngắn như vậy mà đầu ra sẽ là:Cần hiển thị thời gian cục bộ trên các chuyển đổi DST bằng cách sử dụng đối tượng ngày Javascript

00:00, 02:00, 03:00

Và vào ngày dài, chúng tôi có thêm một giờ từ 01:00 đến 02:00 sao cho sản lượng sẽ là:

00:00, 01:00, 01:00, 02:00, 03:00

Tôi đã tìm thấy hai câu trả lời tuyệt vời này làm nổi bật một số cạm bẫy và giải quyết một phần vấn đề của tôi:

Nhưng những khó khăn thực sự là trong việc đưa ra javascript biết giờ này còn thiếu và thêm (có thể nói) như được xác định trong câu hỏi thứ hai nêu trên.

Tôi nghĩ rằng một giải pháp tiềm năng cho điều này sẽ hoạt động trong UTC (aka GMT) và chỉ chuyển đổi thành giờ địa phương nhưng tôi đang cố gắng xem cách tôi có thể thực hiện việc này.

Có ai có bất kỳ ý tưởng nào về cách đạt được những gì tôi theo sau không?

Trả lời

3

Nếu bạn có một múi giờ cố định, mã javascript sau dường như làm việc (thử nghiệm trên phiên bản chrome mới nhất và firefox 6):

// set the date to 11/04/2012 at 00:00 UTC 
var date = new Date(1331424000000); 
for(var i = 1; i <= 12; i++) { 
    $('.data-dston').append(' ' + date.getHours() + ':00, '); 
    date = new Date(date.getTime() + 3600000) 
} 

// set the date to 04/11/2012 at 00:00 UTC 
var date = new Date(1351987200000); 
for(var i = 1; i <= 12; i++) { 
    $('.data-dstoff').append(' ' + date.getHours() + ':00, '); 
    date = new Date(date.getTime() + 3600000) 
} 

Dưới đây là một JSFiddle: http://jsfiddle.net/Vsd2A/3/ để xem mã trong hành động!

+0

Cảm ơn Krtek, tôi đã lấy ví dụ của bạn và điều chỉnh nó như được hiển thị trong câu trả lời của tôi. –

1

Thích ứng với những gì Krtek đã đưa ra (đối với múi giờ của tôi - UK) Tôi bây giờ có những điều sau đây:

// set the date to 27/03/2011 at 00:00 UTC 
var date = new Date('27 Mar 2011 00:00'); 
for(var i = 1; i <= 12; i++) 
{ 
    $('.data-dston').append(' ' + date.getHours() + ':00, '); 
    date.setTime(date.getTime() + 3600000); 
} 

// set the date to 30/10/2011 at 00:00 UTC 
var date = new Date('30 Oct 2011 00:00'); 
for(var i = 1; i <= 12; i++) 
{ 
    $('.data-dstoff').append(' ' + date.getHours() + ':00, '); 
    date.setTime(date.getTime() + 3600000) 
} 

Trong đó có các lợi ích của việc không phải xây dựng một đối tượng mới trên mỗi lần lặp.

Các vấn đề liên quan