Apache flex 如何在Flex中将DD/MM/YYYY格式的字符串转换为日期对象

Apache flex 如何在Flex中将DD/MM/YYYY格式的字符串转换为日期对象,apache-flex,date,flash-builder,Apache Flex,Date,Flash Builder,我在文本字段中从用户处获取日期输入,格式为DD/MM/YYYY。 如何在Flex中将此字符串转换为日期对象。 平台:Adobe Flash Builder 4.6使用stringToDate方法。DateFormatter还有一个parseDateString函数,但由于某些原因,它被设置为protected public function convertStringToDate(s:String):Date { return DateField.string

我在文本字段中从用户处获取日期输入,格式为DD/MM/YYYY。 如何在Flex中将此字符串转换为日期对象。 平台:Adobe Flash Builder 4.6

使用stringToDate方法。DateFormatter还有一个
parseDateString
函数,但由于某些原因,它被设置为protected

  public function convertStringToDate(s:String):Date
  {       
       return DateField.stringToDate(s, "DD/MM/YYYY");
  }

由于Flex SDK 4.10.0,您可以使用

DateFormatter.parseDateString(s, "DD/MM/YYYY");

以前版本的
parseDateString
不支持格式字符串,因此如果您不使用最新的Apache SDK(我知道我们不是因为第三方组件),您基本上必须编写自己的转换

内置的DateFormatter具有静态方法parseDateString,但您无法指定字符串的格式。这有点垃圾

如果您确定没有本地化问题,并且确定日期始终为DD/MM/YYYY格式,则可以使用以下格式:

public function stringToDate(date:String):Date {
    // Extract year, month and day from passed in date string
    var year:int = IntFromSubString(date, 6, 4);
    var month:int = IntFromSubString(date, 3, 2);
    var day:int = IntFromSubString(date, 0, 2);

    // Always remember Flex months start from 0 (Jan=0, Feb=1 etc.) so take 1 off the parsed month
    return new Date(year, month-1, day);
}

private static function IntFromSubString(date:String, start:int, length:int):int {
    return parseInt(date.substr(start, length)) as int;
}

我无法找到确切的版本,但至少从Flex 3.4开始,
parseDateString
不再受保护。但此功能不应在Flex SDK 4.10.0之前使用!我正在Flash Builder 4.6中创建flex移动应用程序。其中DateField对象不可用。DateFormatter.parseDateString只允许一个参数。您能回答这个问题吗[parseDateString存在于Flex的早期版本中,但在Apache Flex 4.9和4.10.Se发行说明中都得到了改进。4.11中有几个修复程序主要与不带分隔符的日期格式有关。