我聽說有一些時區更新jQuery datetimepicker,所以你可能想先檢查網站,但這裏是我做了什麼來得到選擇日期爲UTC格式的&時間。
首先創建datetimepicker並使用城市而不是+0500 GMT,因爲如果您使用GMT偏移量,則必須考慮夏令時 - 這是一場噩夢。
// 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' }
]);
接下來,mde on Github搶timezoneJS.Date庫(注:你還需要下載相應的時區文件,爲您的區域,只要按照README中的指導)
現在,當用戶選擇日期onSelect方法被調用。
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
}
不完全無痛,但它會照顧你的夏令時的東西。
這樣做的反向來用UTC時間戳的日期和時區一個DateTimePicker看起來是這樣的:
// 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);
我不能肯定,如果你需要在最後一行中的setDate一部分,但無法傷害。
的時間可能是局部的,我會去看看DOC – 2013-02-19 16:23:02
@HugoDozois - 是啊...任何想法如何,我可以「unlocalize」吧? – Tom 2013-02-19 16:25:14
@Tom:[Date](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date)對象的getTimezoneOffset方法以分鐘返回偏移量。您可以使用它將本地日期轉換爲UTC。 – Martijn 2013-02-19 17:16:39