3

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

我知道我可以使用将“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 似乎应该可以做到这一点。

4

4 回答 4

3

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

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

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)。

于 2008-09-17T20:12:48.553 回答
2

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

  • DateField.stringToDate(valueString:String, inputFormat:String):Date
  • DateField.dateToString(value:Date, outputFattern:String):String

但不幸的是,它们不支持小时/分钟/秒(只是日期)。

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

于 2008-09-19T09:18:56.690 回答
1

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

或者,可能有一个分词器将接受输入并将其拆分为 : 为您提供一个可以转换为整数的字符串数组。分词器也不难写,如果 flex 中不存在分词器,它会很有趣。

-亚当

于 2008-09-17T16:43:29.507 回答
0

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

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

于 2008-09-18T11:33:11.897 回答