Hi, > Thanks. Do you have time to add some more tests? Mastella test no as I'm not 100% familiar with them yet.
I tested locally with about 50 combinations of formats and dates. I run against 4.9 and 4.10 and diffed the trace output to see what had changed. Here the rough test code I used - it could be better but covers more ground that the existing tests :-) When I get some time I'll see if I can convert it into something mustella friendly. <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" initialize="init()"> <fx:Script> <![CDATA[ import mx.controls.DateField; public function testStringToDate(date:String, format:String):void { var result:Date; try { result = DateField.stringToDate(date, format); } catch (error:Error) { trace("OPPS RTE! " + error.message); } if (result != null) { trace(date + " formatted with " + format + " = " + result.toString()); } else { trace(date + " formatted with " + format + " = null"); } } public function testDateToString(date:Date, format:String):void { var result:String; try { result = DateField.dateToString(date, format); } catch (error:Error) { trace("OPPS RTE! " + error.message); } if (result != null) { trace(date + " formatted with " + format + " = " + result); } else { trace(date + " formatted with " + format + " = null"); } } protected function init():void { var result:Date; // MM/DD/YYYY testStringToDate("01 01 2013", "MM/DD/YYYY"); testStringToDate("01/01/2013", "MM/DD/YYYY"); testStringToDate("1/1/2013", "MM/DD/YYYY"); testStringToDate("1/10/2013", "MM/DD/YYYY"); testStringToDate("1/10/2013", "MM/DD/YYYY"); testStringToDate("30/1/2013", "MM/DD/YYYY"); testStringToDate("7/17/69", "MM/DD/YYYY"); testStringToDate("30/1/13", "MM/DD/YYYY"); testStringToDate("2013/1/1", "YYYY/M/DD") testStringToDate("13 6 2013", "DD MMM YYYY") testStringToDate("1/10", "MM/DD/YYYY"); testStringToDate("2013", "MM/DD/YYYY"); testStringToDate("1/1/10/2013", "MM/DD/YYYY"); testStringToDate("13/10/2013", "MM/DD/YYYY"); testStringToDate("1/45/2013", "MM/DD/YYYY"); testStringToDate("1-10-2013", "MM/DD/YYYY"); testStringToDate("1 10 2013", "MM/DD/YYYY"); testStringToDate("1/10-2013", "MM/DD/YYYY"); testStringToDate("1///10-2013", "MM/DD/YYYY"); testStringToDate("1/10/2013/", "MM/DD/YYYY"); testStringToDate("/1/10/2013", "MM/DD/YYYY"); testStringToDate("1////10//2013", "MM/DD/YYYY"); testStringToDate("1 10 2013", "MM/DD/YYYY"); // DD/MM/YYYY testStringToDate("01/01/2013", "DD/MM/YYYY"); testStringToDate("1/1/2013", "DD/MM/YYYY"); testStringToDate("1/10/2013", "DD/MM/YYYY"); testStringToDate("1/10", "DD/MM/YYYY"); testStringToDate("2013", "DD/MM/YYYY"); testStringToDate("1/1/10/2013", "DD/MM/YYYY"); testStringToDate("1-10-2013", "DD/MM/YYYY"); testStringToDate("1 10 2013", "DD/MM/YYYY"); // shorter formats testStringToDate("1/1/2013", "M/D/YYYY"); testStringToDate("1/10/2013", "D/M/YY"); testStringToDate("1/10/2013", "D/MM/YY"); testStringToDate("1/10/2013", "M/D/YY"); testStringToDate("7/17/69", "M/D/YY"); testStringToDate("1/30/13", "M/D/YY"); testStringToDate("1/1/2013", "DD MMM YYYY"); // missing parts testStringToDate("1/7/2013", "MM/DD"); testStringToDate("1/1/2013","MM/YYYY"); testStringToDate("1/7/2013", "M/D"); // No seperators (does this work?) testStringToDate("1/7/2013", "MMDD"); testStringToDate("1/10/2013","MMDDYYYY"); testStringToDate("1/7/2013", "DDMMYY"); // MM/DD/YYYY // MM/DD/YYYY testStringToDate("01 01 2013", "MM/DD/YYYY"); testStringToDate("01/01/2013", "MM/DD/YYYY"); testStringToDate("1/1/2013", "MM/DD/YYYY"); testStringToDate("1/10/2013", "MM/DD/YYYY"); testStringToDate("1/10/2013", "MM/DD/YYYY"); testStringToDate("30/1/2013", "MM/DD/YYYY"); testStringToDate("7/17/69", "MM/DD/YYYY"); testStringToDate("7/17/71", "MM/DD/YYYY"); testStringToDate("1/1/13", "MM/DD/YYYY"); testStringToDate("1/10", "MM/DD/YYYY"); testStringToDate("2013", "MM/DD/YYYY"); testStringToDate("1/1/10/2013", "MM/DD/YYYY"); testStringToDate("13/10/2013", "MM/DD/YYYY"); testStringToDate("1/45/2013", "MM/DD/YYYY"); testStringToDate("1-10-2013", "MM/DD/YYYY"); testStringToDate("1 10 2013", "MM/DD/YYYY"); testStringToDate("1/10-2013", "MM/DD/YYYY"); testStringToDate("1///10-2013", "MM/DD/YYYY"); testStringToDate("1/10/2013/", "MM/DD/YYYY"); testStringToDate("/1/10/2013", "MM/DD/YYYY"); testStringToDate("1////10//2013", "MM/DD/YYYY"); testStringToDate("1 10 2013", "MM/DD/YYYY"); // DD/MM/YYYY var date1:Date = new Date(2013,0,1); var date2:Date = new Date(2013,9,1); var date3:Date = new Date(1969,6,17); testDateToString(date1, "DD/MM/YYYY"); testDateToString(date2, "DD/MM/YYYY"); testDateToString(null, "DD/MM/YYYY"); testDateToString(new Date(), "DD/MM/YYYY"); testDateToString(new Date(Date.parse("")), "DD/MM/YYYY"); // shorter formats testDateToString(date1, "M/D/YYYY"); testDateToString(date2, "D/M/YY"); testDateToString(date2, "D/MM/YY"); testDateToString(date3, "M/D/YY"); testDateToString(date3, "D/M/YY"); testDateToString(date1, "M/D/YY"); // missing parts testDateToString(date2, "MM/DD"); testDateToString(date2, "MM/YYYY"); testDateToString(date2, "M/D"); // No seperators (does this work?) testDateToString(date2, "MMDD"); testDateToString(date2, "MMDDYYYY"); testDateToString(date2, "DDMMYY"); } ]]> </fx:Script> <mx:DateField width="300" /> </s:Application> Thanks, Justin