如何将ISO日期和时间格式转换为" DD Mon YYYY hh:mm:ss"?

时间:2016-04-07 13:58:50

标签: javascript datetime

我有一个这样的变量,

var date = "2016-04-07T03:03:03Z";

如何使用JavaScript / jQuery在本地时区将其转换为此6 Apr 2016, 8:03:03 PM的时间格式?

5 个答案:

答案 0 :(得分:1)

试试这个:

var date = "2016-04-07T03:03:03Z";
var myDate = new Date(date);

console.log(myDate);
  

Thu Apr 07 2016 05:03:03 GMT + 0200(W. Europe Daylight Time)

本地时区的new Date(date)转换

如果您想要更多地控制价值,也可以格式化日期,请参阅this article了解详情

答案 1 :(得分:1)

由于你想用时区解析它然后格式化输出,我强烈建议使用Moment.js这是一个很好用的库来进行时间和日期操作:

代码看起来像这样:

var date = "2016-04-07T03:03:03Z";
console.log(moment(date).format('D MMM YYYY, h:mm:ss A')); 
// "7 Apr 2016, 5:03:03 AM"

答案 2 :(得分:1)

使用Date.prototype.toLocaleDateString()函数的解决方案:

var date_str = "2016-04-07T03:03:03Z",
    options = { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit'},
    formatted = (new Date(date_str)).toLocaleDateString('en-US', options),
    date_parts = formatted.substring(0, formatted.indexOf(",")).split(" ").reverse().join(" ");

var formatted_date = date_parts + formatted.substr(formatted.indexOf(",") + 1);

console.log(formatted_date);

输出将如下所示(根据您的语言环境):

7 Apr 2016, 6:03:03 AM

答案 3 :(得分:0)

我尝试过可以帮到你的东西。

编辑:更新了我的代码段,将军事时间格式化为标准时间

function formatDate ( today ) {
  var newDateItems = new Array();
  var dateItems = String(today).split(" ");
  dateItems.forEach(function(item, index){
  	if (index > 0 && index < 5) {
      if (index == 4){
        item = getStandardTime(item);
      }
      newDateItems.push(item);
    }
  });
  return newDateItems.join(" ");
}
//To format military time into standard time
function getStandardTime( time ) {
  time = time.split(":");
  var hh = Number(time[0]);
  var mm = Number(time[1]);
  var ss = Number(time[2]);
  var timeValue = "";
  if (hh > 12) timeValue += hh - 12;
  else timeValue += hh;
  
  if (mm < 10) timeValue += ":0" + mm;
  else timeValue += ":" + mm
 	
  if (ss < 10) timeValue += ":0" + ss;
  else timeValue += ":" + ss
  
  timeValue += (hh >= 12) ? " PM" : " AM"; 
  return timeValue
  
}
var dateToday = new Date();
document.write(formatDate(dateToday));

答案 4 :(得分:0)

这是一个也使用type-script的函数,并且如果是一位数字,则在分钟和小时前面加上 0

function convertISODateToTimeFormat(ISODate: string) {
      const newDateObj = new Date(ISODate);
      const toMonth = newDateObj.getMonth() + 1;
      const toYear = newDateObj.getFullYear();
      const toDate = newDateObj.getDate();
      const toHours = newDateObj.getHours();
      const toHoursProcessed = (toHours < 10 ? '0' : '') + toHours;
      const toMin = newDateObj.getMinutes();
      const toMinProcessed = (toMin < 10 ? '0' : '') + toMin;
      const dateTemplate = `${toDate}.${toMonth}.${toYear} ${toHoursProcessed}:${toMinProcessed}`;
      // console.log(dateTemplate)
      return dateTemplate;
    }
    convertISODateToTimeFormat('2019-08-07T02:01:49.499Z')