Javascript 从datetime本地元素转换为日期对象
我正在使用HTML5元素datetime local。我需要两种格式的日期。一个作为日期对象,另一个作为字符串。我将在数据库中存储date对象,并使用字符串设置datetime本地表单输入 我需要将此字符串转换为日期对象:Javascript 从datetime本地元素转换为日期对象,javascript,html,forms,date,datetime,Javascript,Html,Forms,Date,Datetime,我正在使用HTML5元素datetime local。我需要两种格式的日期。一个作为日期对象,另一个作为字符串。我将在数据库中存储date对象,并使用字符串设置datetime本地表单输入 我需要将此字符串转换为日期对象: “2014-06-22T16:01” 我好像找不到正确的时间。这就是我得到的。时间不正确。 2014年6月22日09:01:00 GMT-0700(PDT) 以下是我设置日期的方式: function formatTime(_date) { var _this = this,
“2014-06-22T16:01” 我好像找不到正确的时间。这就是我得到的。时间不正确。
2014年6月22日09:01:00 GMT-0700(PDT) 以下是我设置日期的方式:
function formatTime(_date) {
var _this = this,
date = (_date) ? _date : new Date(),
day = date.getDate(),
month = date.getMonth() + 1,
year = date.getFullYear(),
hour = date.getHours(),
minute = date.getMinutes(),
seconds = date.getSeconds(),
function addZero(num) {
return num > 9 ? num : '0' + num;
}
minute = addZero(minute);
seconds = addZero(seconds);
hour = addZero(hour);
day = addZero(day);
month = addZero(month);
return year + '-' + month + '-' + day + 'T' + hour + ':' + minute;
})
例如:
如果您试图获取ISO 8601日期字符串,可以尝试。但是,它始终使用UTC。如果要包括本地时区,请使用以下内容:
/* Return a string in ISO 8601 format with current timezone offset
** e.g. 2014-10-02T23:31:03+0800
** d is a Date object, or defaults to current Date if not supplied.
*/
function toLocalISOString(d) {
// Default to now if no date provided
d = d || new Date();
// Pad to two digits with leading zeros
function pad(n){
return (n<10?'0':'') + n;
}
// Pad to three digits with leading zeros
function padd(n){
return (n<100? '0' : '') + pad(n);
}
// Convert offset in mintues to +/-HHMM
// Note change of sign
// e.g. -600 => +1000, +330 => -0530
function minsToHHMM(n){
var sign = n<0? '-' : '+';
n = Math.abs(n);
var hh = pad(n/60 |0);
var mm = pad(n%60);
return sign + hh + mm;
}
var offset = minsToHHMM(d.getTimezoneOffset() * -1);
return d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate()) +
'T' + pad(d.getHours()) + ':' + pad(d.getMinutes()) + ':' + pad(d.getSeconds()) +
'.' + padd(d.getMilliseconds()) + offset;
}
console.log(toLocalISOString(new Date())); // 2014-06-23T07:58:04.773+0800
对于UTC、ISO问题,我认为您已经得到了答案。对于日期格式,请检查此链接-我可能没有正确地传达我的问题。主要问题是设置的时间是5小时。时间正在转化为未来。我错过了什么?
function parseYMDHM(s) {
var b = s.split(/\D+/);
return new Date(b[0], --b[1], b[2], b[3], b[4], b[5]||0, b[6]||0);
}
console.log(parseYMDHM('2014-06-22T16:01')); // Sun Jun 22 16:01:00 UTC+0800 2014