14

如何使用 JavaScript 从日期字符串中获取时间。

我的日期字符串采用以下方式:2013-04-08T10:28:43Z

如何以小时和分钟格式拆分时间。我想通过以下方式显示活动流:

xxx 已于 2 小时前
更新 yyy 已于 3 分钟前更新

4

5 回答 5

20

只需创建新的 Date 对象:

var myDate = new Date("2013-04-08T10:28:43Z");

var minutes = myDate.getMinutes();
var hours = myDate.getHours();
于 2013-04-10T06:58:44.837 回答
2

简单的 Javascript 绰绰有余:Date.parse 会将您的字符串转换为时间戳:

var date_string = '2013-04-08T10:28:43Z';

var your_date_object = new Date();
your_date_object.setTime(Date.parse( date_string ));

var min = your_date_object.getUTCMinutes();
var hour = your_date_object.getUTCHours();
于 2013-04-10T06:55:04.750 回答
1

从您的 dateString 中提取日期

首先提取数字

var sp = dateString.match(/\d+/g)

然后你可以构建一个 Date 对象或跳过这一步

var dateObject = new Date(+sp[0], +sp[1]-1, +sp[2], +sp[3], +sp[4], +sp[5])

并在此 Date 对象上调用getHoursand 。getMinutes

如果您跳过此步骤,则直接获得+sp[3]数小时和+sp[4]数分钟。


计算差异

由于您似乎必须与现在进行比较,因此您将通过这种方式获得时差:

var timeDifference = new Date(new Date - dateObject);

然后调用getHoursgetMinutestimeDifference

于 2013-04-10T07:21:38.633 回答
0

这就是所谓的 ISO 字符串。有一些实用程序可以将 ISO 字符串解析为常规 JavaScript 日期,例如 Dojo。

var date = dojo.date.stamp.fromISOString("2013-04-08T10:28:43Z");

http://dojotoolkit.org/reference-guide/1.8/dojo/date/stamp.html

于 2013-04-10T06:47:54.297 回答
-1
var curr_date = new Date();
var test_date = new Date("2016-01-08 10:55:43");

hours_diff=Math.abs(test_date.getHours()-curr_date.getHours());
minutes_diff=Math.abs(test_date.getHours()*60+test_date.getMinutes()-curr_date.getHours()*60-curr_date.getMinutes());
console.log("xxx has updated "+hours_diff+" hours ago");
console.log("xxx has updated "+minutes_diff+" minutes ago"); //not so beautiful

///STILL IF THE date is a string and !!NOT CREATED with DATE 
/// "Get the time from a date string" might have this solution

var date = "2016-01-08 10:55:43";
var hours = date.slice(-8);

console.log("hours and minutes string is "+hours);

小提琴测试

于 2016-02-01T17:19:56.253 回答