有没有办法使用标准库将 HH:MM 格式的字符串解析为日期(或其他)对象?

我知道我可以使用以下命令将“9/17/2008 10:30”之类的内容解析为 Date 对象

var date:Date = new Date(Date.parse("9/17/2008 10:30");

但我想单独解析 10:30。下面的代码将不起作用。

var date:Date = new Date(Date.parse("10:30");

我知道我可以使用自定义 RegEx 来相当轻松地完成此操作,但似乎使用现有的 Flex API 应该可以做到这一点。

有帮助吗?

解决方案

回答您的具体问题:不,没有库函数可以完成您想做的事情,但是没有库函数可以解析 ISO 格式、德语格式、瑞典语格式、年份为罗马数字的日期等日期。

为什么不使用正则表达式?这就是他们的目的。

其他提示

如果您必须使用您指定的确切格式,那么您需要自己解析它。

这是一个简单的例子(未经测试):

var str:String = "9/17/2008 10:30"

var items:Array = str.split(" ");
var dateElements:Array = items[0].split("/");
var timeElements:Array = items[1].split(":");

var n:Date = new Date(dateElements[2],
                        dateElements[0],
                        dateElements[1].
                        timeElements[0],
                        timeElements[1]);

如果时间不是以 24 时钟表示,则无法检查 AM 或 PM(代码将假定 AM)。

作为一个简单且免费的解决方案,您可以使用 DateField 的一些静态方法:

  • DateField.stringToDate(valueString:String, inputFormat:String):日期
  • DateField.dateToString(值:日期,outputFattern:字符串):字符串

但不幸的是他们不支持小时/分钟/秒(仅支持日期)。

在您的具体情况下:Date 对象始终还包含“日期”信息。如果它不重要,你不能在解析之前简单地连接一个标准日期字符串吗?

您是否考虑过在时间字符串前添加“01/01/2000”,然后应用日期?

或者,可能有一个分词器会获取输入并将其拆分为:给你一个可以转换为整数的字符串数组。分词器也不难编写,而且如果 Flex 中不存在分词器也会很有趣。

-亚当

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top