【问题标题】:Change date format from yyyy-MM-dd'T'HH:mm:ss.SSS'Z' to dd-mmm-yyyy using JavaScript [duplicate]使用 JavaScript 将日期格式从 yyyy-MM-dd'T'HH:mm:ss.SSS'Z' 更改为 dd-mmm-yyyy [重复]
【发布时间】:2017-07-13 10:57:58
【问题描述】:

我想将日期格式从 yyyy-MM-dd'T'HH:mm:ss.SSS'Z' 更改为 dd-mmm-yyyy 当日期来自 JSON 对象时。我正在使用 ng-csv 插件下载这个 JSON。下载功能运行良好,但我需要使用 JavaScript 转换日期格式。我有这样的 JSON 结构

[{
    "Dates": "2016-09-27T18:30:00.000Z",
    "ABC": 40,
    "PQR": 1,
    "XYZ": 18
}, {
    "Dates": "2016-10-02T18:30:00.000Z",
    "ABC": 43,
    "PQR": 11,
    "XYZ": 8
}, {
    "Dates": "2016-10-03T18:30:00.000Z",
    "ABC": 6,
    "PQR": 76,
    "XYZ": 34
}]

有什么建议吗?提前致谢。

【问题讨论】:

  • 使用momentjs (momentjs.com) 解析和格式化日期
  • 你可以使用angular js过滤器

标签: javascript angularjs date


【解决方案1】:

试试这个

function getDate(dateVal) {

var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];

  var date1 = dateVal.split('T')[0];
  var date = new Date(date1);
  var getDay = date.getDate();
  var getMonth = date.getMonth() + 1;
  var getYear = date.getFullYear();
  alert(getDay +' '+ monthNames[getMonth]  + ' ' +getYear);
  return  getDay +'-'+ monthNames[getMonth] + '-' +getYear
}

getDate('2016-09-27T18:30:00.000Z');

var data = [
 {
"Dates": "2016-09-27T18:30:00.000Z",
"ABC": 40,
"PQR": 1,
"XYZ": 18
},{
"Dates": "2016-10-02T18:30:00.000Z",
"ABC": 43,
"PQR": 11,
"XYZ": 8
},{
"Dates": "2016-10-03T18:30:00.000Z",
"ABC": 6,
"PQR": 76,
"XYZ": 34
}
];
var temp = [];
for(var i=0; i<data.length;i++){

  temp[i] = getDate(data[i].Dates);
}

console.log(temp);

Working Fiddle

【讨论】:

  • 仅代码的答案没有那么有用。这不仅会转换日期,还会将其转换为本地时区,以便它可以表示不同时区中的不同日期。这应该在答案中解释。解析字符串,创建日期,然后读回刚刚传递给日期的值以生成字符串似乎也是多余的。为什么不直接重新格式化原始字符串并完全避免 Date 呢?只需要 2 行代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多