我可能忽略了某些东西,但是Flash / AS3似乎缺少基本的日期格式化功能。我如何从Date
中获取格式化字符串?有一些选项,如.toLocaleDateString()
和.toUTCString()
,但这有点受限。
那么,在AS3中如何格式化Date
对象?
我可能忽略了某些东西,但是Flash / AS3似乎缺少基本的日期格式化功能。我如何从Date
中获取格式化字符串?有一些选项,如.toLocaleDateString()
和.toUTCString()
,但这有点受限。
那么,在AS3中如何格式化Date
对象?
Flash Player 10.1在flash.globalization包中添加了DateTimeFormatter。它非常灵活,但文档不够详细。
import flash.globalization.DateTimeFormatter;
var d:Date = new Date();
var dtf:DateTimeFormatter = new DateTimeFormatter("en-US");
dtf.setDateTimePattern("yyyy-MM-dd 'at' hh:mm:ssa");
trace(dtf.format(d));
// 2012-06-06 at 09:58:46PM
new DateTimeFormatter(LocaleID.DEFAULT);
- matt lohkampdtf.setDateTimePattern("yyyy-MM-dd 'at' HH:mm:ss");
- Bitterblue这是一个关于自定义格式的简单示例:
public static function getDateIso8601Long(date:Date):String {
var str:String = date.getFullYear().toString()
str = str +"-"+ ((String((date.getMonth()+1)).length == 1)?"0"+(date.getMonth()+1):(date.getMonth()+1)).toString()
str = str +"-"+ ((date.getDate().toString().length == 1)?"0"+date.getDate():date.getDate()).toString()
str = str +"T"+ ((date.getHours().toString().length == 1)?"0"+date.getHours():date.getHours()).toString()
str = str +":"+ ((date.getMinutes().toString().length == 1)?"0"+date.getMinutes():date.getMinutes()).toString()
str = str +":"+ ((date.getSeconds().toString().length == 1)?"0"+date.getSeconds():date.getSeconds()).toString()
var ms:String = date.getMilliseconds().toString()
while (ms.length < 3)
ms = "0"+ms
str = str+"."+ms
var offsetMinute:Number = date.getTimezoneOffset()
var direction:Number = (offsetMinute<0)?1:-1
var offsetHour:Number = Math.floor(offsetMinute/60)
offsetMinute = offsetMinute-(offsetHour*60)
var offsetHourStr:String = offsetHour.toString()
while (offsetHourStr.length < 2)
offsetHourStr = "0"+offsetHourStr
var offsetMinuteStr:String = offsetMinute.toString()
while (offsetMinuteStr.length < 2)
offsetMinuteStr = "0"+offsetMinuteStr
str = str+((direction == -1)?"-":"+")+offsetHourStr+":"+offsetMinuteStr
return str
}
有一个 mx.formatters.DateFormatter
类(请参见 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/formatters/DateFormatter.html)。它有一个 formatString
属性用于自定义格式化。然后,您可以调用 format
,提供一个日期以获取字符串。
很遗憾,我认为在本地支持方面你没有忽略任何东西。有一个this project似乎提供了更多的灵活性,但是我从来没有深入研究过它,所以我不能保证它的可靠性。目前我正在处理的项目因此而产生了一个500行(并且还在增加)的DateUtil类。
private static function getTime():String
{
const d = '.';
const e = '';
const s = ':';
var date:Date = new Date();
return e.concat(pad(date.hours, 2), s,
pad(date.minutes, 2), s,
pad(date.seconds, 2), d,
pad(date.milliseconds, 3));
function pad(value:String, length:int):String
{
const zero = '0';
var result:String = value;
while (result.length < length)
{
result = zero.concat(result);
}
return result;
}
}
2010-09-16T07:28:14+00:00
>>2010.1609.0728
- Sietse