如何获取javascript日期对象中给出的实际时间格式

时间:2015-06-05 12:48:51

标签: javascript date

我给出了以下两种格式的时间格式:

new Date("2015-05-05T08:00:00-0400")

在处理上述两个代码时,我得到了

  

2015年5月5日星期五17:30:00 GMT + 0530(印度标准时间)

我无法获得我给出的格式。 我希望在处理时获得该格式(2015-05-05T08:00:00-0400)。

请帮帮我......

3 个答案:

答案 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;
}