Tôi nghe có một số cập nhật múi giờ cho bộ dữ liệu jQuery để bạn có thể kiểm tra trang web trước, tuy nhiên đây là những gì tôi đã làm để có được đã chọn ngày & thời gian ở định dạng UTC.
Trước tiên hãy tạo bảng kê dữ liệu và sử dụng thành phố thay vì +0500 GMT vì nếu bạn sử dụng bù giờ GMT, bạn phải tính đến khoản tiết kiệm ban ngày - và đó là cơn ác mộng.
// create ye datetimepicker with timezone options
$('#datetimepicker').datetimepicker({
showTimezone: true,
onSelect: onSelect,
timezoneList: [
{ value: 'America/New_York', label: 'New York'},
{ value: 'America/Chicago', label: 'Chicago' } ,
{ value: 'America/Denver', label: 'Denver' },
{ value: 'America/Los_Angeles', label: 'Los Angeles' }
]);
Tiếp theo, lấy các thư viện timezoneJS.Date từ mde on Github (Chú ý: bạn cũng sẽ cần phải tải về các tập tin múi giờ thích hợp cho khu vực của bạn, chỉ cần làm theo các hướng dẫn README)
Bây giờ khi người sử dụng chọn một ngày phương thức onSelect được gọi.
function onSelect(dateText, dateInst) {
// get the date without the timezone data
var d = $('#datetimepicker').datepicker('getDate');
// init timezoneJS
timezoneJs.timezone.zoneFileBasePath = '/tz';
timezoneJs.timezone.init();
// get the selected timezone
var tz = $('#datetimepicker').data('datepicker').settings.timepicker.timezone
// construct the utcDate with the help of the timezoneJS.Date lib
var utcDate = new timezoneJS.Date(
d.getFullYear(),
d.getMonth(),
d.getDate(),
d.getHours(),
d.getMinutes(),
tz)
var utcLinuxTimestamp = utcDate.getTime()/1000
}
Không chính xác, nhưng nó sẽ giúp bạn tiết kiệm công cụ tiết kiệm ánh sáng ban ngày.
Điều ngược lại điều này để cư một DateTimePicker với một ngày và một múi giờ từ một UTC timestamp trông như thế này:
// init timezone JS
timezoneJs.timezone.zoneFileBasePath = '/tz';
timezoneJs.timezone.init();
// get timezone date JS object
var tz = 'America/New York';
var d = new timezoneJS.Date(timestamp * 1000, tz);
$('#datetimepicker').datetimepicker({
showTimezone: true,
timezoneList: [
{ value: 'America/New_York', label: 'New York'},
{ value: 'America/Chicago', label: 'Chicago' } ,
{ value: 'America/Denver', label: 'Denver' },
{ value: 'America/Los_Angeles', label: 'Los Angeles' }
],
timezone: tz,
defaultDate: d._dateProxy,
onSelect: onSelect
}).datepicker('setDate',d._dateProxy);
Tôi không chắc chắn nếu bạn cần một phần setDate trên dòng cuối cùng, nhưng không thể đau.
Hiện có thể được định vị, tôi sẽ đi xem xét các doc –
@HugoDozois - Ừ ... bất kỳ ý tưởng làm thế nào tôi có thể "unlocalize" nó ?? – Tom
@Tom: phương thức 'getTimezoneOffset' của đối tượng [Date] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date) trả về độ lệch theo phút. Bạn có thể sử dụng nó để chuyển đổi ngày địa phương thành UTC. – Martijn