Flex中的时间解析
时间:2020-03-05 18:59:21 来源:igfitidea点击:
是否可以使用标准库将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做到这一点。
解决方案
回答
我们是否考虑过在时间字符串前面加上" 01/01/2000",然后应用日期?
另外,可能还有一个分词器,它将输入并在处将其分割:给我们一个可以转换为整数的字符串数组。令牌生成器也不难编写,而且如果flex中不存在令牌生成器,可能会很有趣。
-亚当
回答
如果必须使用指定的确切格式,则需要自己解析。
这是一个简单的示例(未经测试):
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)。
回答
要回答特定问题:不,没有库函数可以执行我们想做的事,但是没有库函数可以解析ISO格式,德语格式,瑞典格式,日期所在的日期罗马数字等
为什么不使用正则表达式?那就是他们的目的。
回答
作为一种简单而免费的解决方案,我们可以使用DateField的一些静态方法:
- DateField.stringToDate(valueString:String,inputFormat:String):Date
- DateField.dateToString(value:Date,outputFattern:String):String
但不幸的是,它们不支持小时/分钟/秒(仅日期)。
在特定情况下:Date对象始终还包含一个"日期"信息。如果不重要,我们是否不能在解析之前简单地连接一个标准日期字符串?