使用javascript的基于日期和时间的json元素

时间:2015-12-22 09:51:58

标签: javascript

我有这样的json响应:

{
 "NO_INSPECTION": "55",
 "NO_SURAT": "00055",
 "DATE_OF_DESCRIPTION": "2015-12-21 03:08:24"
}

如何将"DATE_OF_DESCRIPTION"中的数据转换为日期和时间。日期应为dd-mm-yyy格式,时间应为HH:mm格式。 (DATE_OF_DESCRIPTION的样本值为2015-12-21 03:08:24

我试过new Date(response.DATE_OF_DESCRIPTION);但没有成功。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

JavaScript具有固定的日期格式,您可以更改它,因此Date对象这次无法帮助您。在我看来,你想要分割那个日期,所以如果你以这种格式“dd-mm-yyy HH:mm”提供它很容易:

response.DATE_OF_DESCRIPTION = response.DATE_OF_DESCRIPTION.split(" "); // date and time are separated by an space
var date = response.DATE_OF_DESCRIPTION[0];
var time = response.DATE_OF_DESCRIPTION[1];

顺便说一句,如果你想解析一个指定格式的日期,为什么不使用任何库?其中许多几乎与本机方法一样可靠和快速。试一试;)

你也可以格式化日期,所以它符合JS规格但是,为什么重新发明轮子?图书馆将为您完成此任务,您将获得最佳的跨浏览器结果!

我用google搜索“javascript日期解析库”,这就是我发现的:

http://momentjs.com/< ---我认为这就是你要找的东西!

答案 1 :(得分:0)

如果不使用其他库并假设输出将始终为零填充且长度相同,我会这样做:

var response = {
  DATE_OF_DESCRIPTION: "2015-12-21 03:08:24"
}

var raw = response.DATE_OF_DESCRIPTION;

var datePart = raw.split(' ')[0];
var timePart = raw.split(' ')[1];

var year = datePart.substring(0, 4);
var month = datePart.substring(5, 7);
var day = datePart.substring(8, 10);

var hours = timePart.substring(0, 2);
var minutes = timePart.substring(3, 5);

// NOTE: Month is 0 indexed
var date = new Date(year, month - 1, day);
var dateTime = new Date(year, month - 1, day, hours, minutes);

console.log(date);
console.log(dateTime);

这给出了输出

Mon Dec 21 2015 00:00:00 GMT+1000 (E. Australia Standard Time)
Mon Dec 21 2015 03:08:00 GMT+1000 (E. Australia Standard Time)
(I'm from Australia, so your timezone will vary)