我正在使用ActionScript3开发一个项目。我有这个函数来解析时间戳字符串。
Plan_ID PlanBeginDate PlanEndDate Srv_Discipline_ID SrvBeginDate SrvEndDate
------- ------------- ----------- ----------------- ------------ ----------
3 2013-01-01 2014-01-01 1 2013-01-01 2013-06-01
4 2015-01-01 2016-01-01 3 2015-01-01 2015-07-01
4 2015-01-01 2016-01-01 3 2015-08-01 2016-01-01
这似乎适用于除private function convertTimestampToNumber(timestamp:String):Number {
//YYYY-MM-DD HH:mm:SS:sss
var re:RegExp = /(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})\s(?P<hour>\d{2}):(?P<min>\d{2}):(?P<sec>\d{2})\.(?P<msec>\d{3})/;
var result:Array = re.exec(timestamp);
Alert.show(timestamp, "Timestamp string", Alert.OK);
return (10000000000000 * parseInt(result.year)
+ 100000000000 * parseInt(result.month)
+ 1000000000 * parseInt(result.day)
+ 10000000 * parseInt(result.hour)
+ 100000 * parseInt(result.min)
+ 1000 * parseInt(result.sec)
+ parseInt(result.msec));
}
之外的所有时间戳。这会引发错误:
"2016-08-01 09:19:43.23"
我认为,因为这个时间戳的毫秒部分只有2个字符长,所以它会抛出错误。为了解决这个问题,我将正则表达式的毫秒部分更改为[Fault] exception, information=TypeError: Error #1009: Cannot access a property or method of a null object reference.
,认为现在它将2个字符和3个字符的长毫秒视为有效,但现在它会在(?P<msec>\d{2|3})
上抛出相同的错误
什么是正确的正则表达式,可以将两种情况视为有效?
答案 0 :(得分:2)
您的更改几乎正确。你能做的是:
(?P<msec>\d{1,3})
这将匹配任意数毫秒,从1位数(可能,但不太可能出现)到3。
答案 1 :(得分:0)
我不确定您的问题,但如果您使用de Date Class,您可以根据需要设置结果格式。
请在下面检查并调整DateTimeFormatter代码 并检查setDateTimePattern()方法:
import flash.utils.getTimer;
import flash.globalization.DateTimeFormatter;
import flash.globalization.DateTimeStyle;
var currentTime = new Date();
function formatDate(date:Date) {
var dtf:DateTimeFormatter = new DateTimeFormatter("fr-FR");
// or new DateTimeFormatter("en-EN");
dtf.setDateTimePattern("yyyy-MM-dd hh:mm:ss");
var longDate:String = dtf.format(date);
trace(longDate)+getTimer();
//trace(" *** LocaleID requested=" + dtf.requestedLocaleIDName);
//trace(" *** Format requested (" + dtf.getDateTimePattern() + ")");
}
trace(" setDateTimePattern example");
formatDate(currentTime);
// output the current time formated as "yyyy-MM-dd hh:mm:ss"
// no Milliseconds avalaible now!
只需检查参考,您就会找到答案AMO。 希望这会有所帮助。