2015-10-16 17 views
5

Làm cách nào để sửa múi giờ tùy chỉnh trên trình duyệt của khách hàng bằng javascript?Sử dụng luôn UTC + 0 - Sửa múi giờ tùy chỉnh trên trình duyệt của khách hàng bằng javascript/angularjs

Ví dụ: ở góc cạnh, tôi có ngày "2015-10-16T00: 00: 00.000Z" từ một backoffice.

Tôi muốn có một màn hình (với UTC-4 New York hay với UTC + 2 Pháp), luôn luôn: 16/10/2015

đọc:

Nếu tôi sử dụng tính theo giờ UTC ở New York, tôi có: 15/10/2015.

<p ng-bind="(myDate | date:'dd/MM/yyyy')"></p> 

Viết:

Tôi đổi toJSON ngày nguyên mẫu để xóa múi giờ:

// Remove TimeZone 
Date.prototype.toJSON = function(){ 
    return moment(this).format('YYYY-MM-DD') + 'T00:00:00.000Z'; 
}; 
+0

Bạn nên cho chúng ta thấy một số mã ... How are you hiển thị ngày đó? – Buzinas

Trả lời

1

Tôi đã thêm điều này:

// Add timeZone 
Date.prototype.addTimeZone = function() { 
    if(this.getTimezoneOffset() > 0){ 
     this.setMinutes(this.getTimezoneOffset()); 
    } 

    return this; 
}; 

Và đây trên bộ điều khiển của tôi/mô hình:

new Date(myDate).addTimeZone(); 

Để tiếp tục:

mở rộng-ngày-prototype.js

// Add timeZone 
Date.prototype.addTimeZone = function() { 
    if(this.getTimezoneOffset() > 0){ 
     this.setMinutes(this.getTimezoneOffset()); 
    } 

    return this; 
}; 

// Remove TimeZone 
Date.prototype.toJSON = function(){ 
    return moment(this).format('YYYY-MM-DD') + 'T00:00:00.000Z'; 
}; 

xem. html

<p ng-bind="(myDate | date:'dd/MM/yyyy')"></p> 

controller.js

new Date(myDate).addTimeZone(); 

tôi sử dụng moment.js

0

Bạn có thể sử dụng getTimezoneOffset để có được những bù đắp của khách hàng, sau đó toán học đơn giản

var dateToTranslate = new Date("2015-10-16T00:00:00.000Z"); 
var timezoneOffset = dateToTranslate.getTimezoneOffset() * 60000; 
var newDate = new Date(+dateToTranslate+timezoneOffset); 
// Fri Oct 16 2015 00:00:00 GMT+0200 (CEST) in my browser 
+1

Xem xét Thời gian mùa hè ở châu Âu chẳng hạn, điều đó sẽ không hiệu quả. Ở Đức, bạn có UTC + 1 vào mùa đông và UTC + 2 vào mùa hè. Vì vậy, bạn sẽ cần phải làm cho sự khác biệt đó, quá. – molerat

+1

'getTimezoneOffset' có thể trả về giá trị khác nhau nếu DST thay đổi – Hacketo

+0

@molerat Tôi cập nhật mã, không biết làm thế nào tôi bị mất, tôi đoán nó sẽ là ok. – Hacketo

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