如何在JavaScript中解析日期时间

5

我有一个日期格式为mm/dd/yy,例如:04/11/13,和一个时间格式为HH:MM:SS,例如:17:02:30

我需要解析以上两个值并将它们放入一个变量dateTime中,格式如下:

YYYY-MM-DDTHH:MM:SSS

2013-04-11T17:02:30.000

在AngularJS或JavaScript中,最好的方法是什么?我还需要验证用户输入并确保它是一个有效的mm/dd/yy日期和一个有效的HH:MM:SS时间。

我知道有很多重复/类似的问题,但我找不到一个回答上述问题的,请告诉我是否找到了一个。


创建过滤器是最好的方法。 - Ajay Beniwal
2
可能值得考虑使用 moment.js,网址为 http://momentjs.com/。 - mishik
@Ajaybeniwal 你能提供任何代码示例吗? - Watt
@mishik,我已经研究了momentjs。它不是用于解析而是用于操作日期时间的,你能提供一些代码示例吗? - Watt
moment("<your_date>", "<your_date_format>").format("<format_needed>") 例如:moment("04/11/13 17:02:30", "MM/DD/YY HH:mm:ss").format() 默认的"format()"似乎是您需要的。 - mishik
2个回答

8
你不需要外部库来完成这个任务。请参见此文档链接,了解 JavaScript 可以正常处理的日期格式。
针对你的问题,有一个具体的解决方案:
var date = new Date("04/11/13" + " " + "17:02:30");
date.toISOString();
>> "2013-04-11T21:02:30.000Z"

请参阅此 MDN 页面,了解有关 Date 对象的更多信息。


+1。太棒了!顺便说一下,对于另一个问题,是否有一种快速的方式可以使用相同的API将结果为“Z” zulu时间转换回用户的本地时区? - Watt
1
是的!由于我们最初创建Date对象时没有指定时间偏移量,JavaScript会自动使用本地用户的时区。要获取用户本地时间,我们可以执行类似于date.toLocaleTimeString("ca-8601")的操作,它将返回“17:02:30”。 - Oliver
此外,您可以在日期字符串中指定时区,例如 new Date("2014 Jul 21 GMT+0530 07:51:00") - Vijay

-1

在AngularJS中实现这一点的最佳方式是使用过滤器。您可以将其绑定到dateTime,然后使用date filter进行过滤。

<span>{{myDate | date:yyyy-MM-ddThh:mm:sss}}</span>

或者在你的控制器中这样写:

$filter('date')(date[, format])

这里有更多信息:http://docs.angularjs.org/api/ng.filter:date


尽管该函数非常有用,但它与本问题——日期解析无关。 - larsmoa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接