我给出了以下两种格式的时间格式:
new Date("2015-05-05T08:00:00-0400")
在处理上述两个代码时,我得到了
2015年5月5日星期五17:30:00 GMT + 0530(印度标准时间)
我无法获得我给出的格式。 我希望在处理时获得该格式(2015-05-05T08:00:00-0400)。
请帮帮我......
答案 0 :(得分:0)
尝试将此参数传递给此函数并获取每个国家/地区的本地标准时区。
function getLocalTimeFromGMT(sTime){
var dte = new Date(sTime);
dte.setTime(dte.getTime() - dte.getTimezoneOffset()*60*1000);
dte.toLocaleString();
var m_names = new Array("January", "February", "March",
"April", "May", "June", "July", "August", "September",
"October", "November", "December");
var curr_date = dte.getDate();
var curr_month = dte.getMonth();
var curr_year = dte.getFullYear();
var hour = dte.getHours();
var min = dte.getMinutes();
var dn = 'am';
if(hour==0){ hour = 12; }
if(hour>=12){
hour = hour-12;
dn = 'pm';
}
return m_names[curr_month] + " " + curr_date +" "+hour+":"+min+" "+dn ;
}
答案 1 :(得分:0)
您可以拆分日期并执行自己的计算,以计算出以小时为单位的时区偏移量。
function getCustomIsoFormat(date) {
// Date
var y = date.getFullYear();
var m = ('00' + (date.getMonth() + 1)).substr(-2);
var d = ('00' + date.getDate()).substr(-2);
// Time
var h = ('00' + date.getHours()).substr(-2);
var i = ('00' + date.getMinutes()).substr(-2);
var s = ('00' + date.getSeconds()).substr(-2);
// Offset
var tz = date.getTimezoneOffset();
var sign = tz > 0 ? '-' : '+';
var tzAbs = Math.abs(tz);
var tzH = ('00' + ~~(tzAbs / 60)).substr(-2);
var tzM = ('00' + ~~(tzAbs % 60)).substr(-2);
var off = sign + tzH + tzM;
return y + '-' + m + '-' + d + 'T' + h + ':' + i + ':' + s + off;
}
// Input: Tue May 05 2015 17:30:00 GMT+0530 (India Standard Time)
var inputDate = new Date("2015-05-05T08:00:00-0400");
// Expected output: 2015-05-05T08:00:00-0400
document.body.innerHTML = getCustomIsoFormat(inputDate);
答案 2 :(得分:0)
正如其他地方所述,javascript Date对象只有一个标准化输出,而且是ES5的 toISOString ,但唯一支持的时区是UTC(Z)。
下面是在本地时区返回ISO 8601格式字符串的函数。
/* Return a string in ISO 8601 format with current timezone offset
**
** e.g. 2014-10-02T23:31:03+0800
**
** Default is the current date.
**
** @param {Date} d - Date object to create string from
** @returns {string} - ISO 8601 format string with local timezone offset
*/
function toLocalISOString(d) {
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;
}