我听说有一些时区更新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