-// Copyright (c) 2007-2010 International Business Machines
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Copyright (c) 2007-2015 International Business Machines
// Corporation and others. All Rights Reserved.
format:table(nofallback) {
Info {
Type { "date_parse" }
},
}
- Headers { "locale","spec", "date", "str"}
+ Headers { "locale", "zone", "spec", "date", "str"}
// locale: locale including calendar type
+ // zone: time zone name, or "" to not explicitly set zone
// spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG'
// date: either 'MILLIS=####' where #### is millis,
// or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale
// or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis
- // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time
+ // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time,
+ // and any other fields present will be set explicitly.
// str: the expected unicode string
Cases {
{
- "en_US@calendar=gregorian",
+ "en_US@calendar=gregorian",
+ "",
"DATE=SHORT,TIME=SHORT",
"ERA=1,YEAR=2007,MONTH=AUGUST,DATE=8,HOUR_OF_DAY=18,MINUTE=54,SECOND=0",
- "8/8/07 6:54 PM"
+ "8/8/07, 6:54 PM"
},
{
"zh_TW@calendar=roc",
+ "",
"DATE=LONG",
"ERA=1,YEAR=98,MONTH=0,DATE=24",
- "民國98年1月24日",
+ "民國 98年1月24日",
},
{
//民國前2年1月24日 -> 1910-1-24
"zh_TW@calendar=roc",
+ "",
"DATE=LONG",
"ERA=0,YEAR=2,MONTH=0,DATE=24",
- "民國前2年1月24日",
+ "民國前 2年1月24日",
},
}
}
Type { "date_format" }
},
}
- Headers { "locale","spec", "date", "str"}
+ Headers { "locale", "zone", "spec", "date", "str"}
Cases {
{
"en_US@calendar=gregorian",
+ "",
"DATE=RELATIVE_SHORT",
"RELATIVE_ADD:DATE=1", // one day from now
- "Tomorrow"
+ "tomorrow"
},
{
"en_US@calendar=gregorian",
+ "",
"DATE=RELATIVE_SHORT",
"RELATIVE_MILLIS=0", // today
- "Today"
+ "today"
},
{
"en_US@calendar=gregorian",
+ "",
"DATE=RELATIVE_SHORT",
"RELATIVE_ADD:DATE=-1", // one day before now
- "Yesterday"
+ "yesterday"
+ },
+ // date only, out of relative range
+ {
+ "en_US@calendar=gregorian",
+ "GMT",
+ "DATE=RELATIVE_FULL",
+ "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0",
+ "Monday, October 8, 2012"
+ },
+ // time only
+ {
+ "en_US@calendar=gregorian",
+ "GMT",
+ "TIME=LONG",
+ "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0",
+ "11:59:00 PM GMT"
+ },
+ {
+ "en_US@calendar=gregorian",
+ "GMT",
+ "TIME=LONG",
+ "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time
+ "5:00:00 PM GMT"
+ },
+ // normal formats, combined using 'at'
+ {
+ "en_US@calendar=gregorian",
+ "GMT",
+ "DATE=RELATIVE_FULL,TIME=LONG",
+ "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0",
+ "Monday, October 8, 2012 at 11:59:00 PM GMT"
+ },
+ // normal formats, combined using 'at'
+ {
+ "en_US@calendar=gregorian",
+ "GMT",
+ "DATE=RELATIVE_MEDIUM,TIME=SHORT",
+ "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0",
+ "Oct 8, 2012 at 11:59 PM"
+ },
+ // formats with relative day, combined using 'at'
+ {
+ "en_US@calendar=gregorian",
+ "GMT",
+ "DATE=RELATIVE_FULL,TIME=LONG",
+ "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time
+ "yesterday at 5:00:00 PM GMT"
+ },
+ // formats with relative day, combined using 'at'
+ {
+ "en_US@calendar=gregorian",
+ "GMT",
+ "DATE=RELATIVE_MEDIUM,TIME=SHORT",
+ "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time
+ "yesterday at 5:00 PM"
+ },
+ // normal formats that have quoted literals, combined
+ {
+ "pt@calendar=gregorian",
+ "GMT",
+ "DATE=RELATIVE_FULL,TIME=LONG",
+ "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0",
+ "segunda-feira, 8 de outubro de 2012 23:59:00 GMT"
},
+ // vi combined formats have time first
+ {
+ "vi@calendar=gregorian",
+ "GMT",
+ "DATE=RELATIVE_LONG,TIME=MEDIUM",
+ "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0",
+ "23:59:00 ngày 8 tháng 10, 2012"
+ },
+ {
+ "vi@calendar=gregorian",
+ "GMT",
+ "DATE=RELATIVE_LONG,TIME=MEDIUM",
+ "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time
+ "17:00:00 Hôm qua"
+ },
+ // el combines formats using hyphen
+ {
+ "el@calendar=gregorian",
+ "GMT",
+ "DATE=RELATIVE_LONG,TIME=MEDIUM",
+ "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0",
+ "8 Οκτωβρίου 2012 - 11:59:00 μμ"
+ },
+ {
+ "el@calendar=gregorian",
+ "GMT",
+ "DATE=RELATIVE_LONG,TIME=MEDIUM",
+ "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time
+ "χθες - 5:00:00 μμ"
+ },
+ // other tests
{
"mt_MT@calendar=gregorian",
+ "",
"DATE=RELATIVE_SHORT",
"RELATIVE_ADD:DATE=1", // one day from now
- "Għada"
+ "għada"
},
{
"mt_MT@calendar=gregorian",
+ "",
"DATE=RELATIVE_SHORT",
"RELATIVE_MILLIS=0", // today
- "Illum"
+ "illum"
},
{
"mt_MT@calendar=gregorian",
+ "",
"DATE=RELATIVE_SHORT",
"RELATIVE_ADD:DATE=-1", // one day before now
- "Lbieraħ"
+ "lbieraħ"
},
{
"ru",
+ "",
"DATE=RELATIVE_SHORT",
"RELATIVE_ADD:DATE=-2", // 2 days ago
- "Ð\9fозавчера"
+ "позавчера"
},
}
}
// Type { "date_parse" }
// },
}
- Headers { "locale","spec", "date", "str"}
+ Headers { "locale", "zone", "spec", "date", "str"}
// locale: locale including calendar type
+ // zone: time zone name, or "" to not explicitly set zone
// spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG'
// date: either 'MILLIS=####' where #### is millis,
// or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale
// or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis
- // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time
+ // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time,
+ // and any other fields present will be set explicitly.
// str: the expected unicode string
// from CLDR UTS 35:
//AD 1 1 01 001 0001 00001
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G y",
"YEAR=1",
"AD 1"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yy",
"YEAR=1",
"AD 01"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyy",
"YEAR=1",
"AD 001"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyy",
"YEAR=1",
"AD 0001"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyyy",
"YEAR=1",
"AD 00001"
//AD 12 12 12 012 0012 00012
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G y",
"YEAR=12",
"AD 12"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yy",
"YEAR=12",
"AD 12"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyy",
"YEAR=12",
"AD 012"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyy",
"YEAR=12",
"AD 0012"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyyy",
"YEAR=12",
"AD 00012"
//AD 123 123 23 123 0123 00123
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G y",
"YEAR=123",
"AD 123"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yy",
"YEAR=123",
"AD 23"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyy",
"YEAR=123",
"AD 123"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyy",
"YEAR=123",
"AD 0123"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyyy",
"YEAR=123",
"AD 00123"
//AD 1234 1234 34 1234 1234 01234
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G y",
"YEAR=1234",
"AD 1234"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yy",
"YEAR=1234",
"AD 34"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyy",
"YEAR=1234",
"AD 1234"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyy",
"YEAR=1234",
"AD 1234"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyyy",
"YEAR=1234",
"AD 01234"
//AD 12345 12345 45 12345 12345 12345
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G y",
"YEAR=12345",
"AD 12345"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yy",
"YEAR=12345",
"AD 45"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyy",
"YEAR=12345",
"AD 12345"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyy",
"YEAR=12345",
"AD 12345"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyyy",
"YEAR=12345",
"AD 12345"
Type { "date_parse" }
},
}
- Headers { "locale","spec", "date", "str"}
+ Headers { "locale", "zone", "spec", "date", "str"}
// locale: locale including calendar type
+ // zone: time zone name, or "" to not explicitly set zone
// spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG'
// date: either 'MILLIS=####' where #### is millis,
// or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale
// or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis
- // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time
+ // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time,
+ // and any other fields present will be set explicitly.
// str: the expected unicode string
// from CLDR UTS 35:
//AD 1 1 01 001 0001 00001
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G y",
"YEAR=2008",
"AD 2008"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yy",
"YEAR=2008",
"AD 08"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyy",
"YEAR=2008",
"AD 2008"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyy",
"YEAR=2008",
"AD 2008"
},
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=G yyyyy",
"YEAR=2008",
"AD 02008"
},
// Japanese
- {
- "en_US@calendar=japanese",
- "PATTERN=G y",
- "YEAR=8",
- "Heisei 8"
- },
- {
- "en_US@calendar=japanese",
- "PATTERN=G yy",
- "YEAR=8",
- "Heisei 08"
- },
- {
- "en_US@calendar=japanese",
- "PATTERN=G yyy",
- "YEAR=8",
- "Heisei 008"
- },
- {
- "en_US@calendar=japanese",
- "PATTERN=G yyyy",
- "YEAR=8",
- "Heisei 0008"
- },
- {
- "en_US@calendar=japanese",
- "PATTERN=G yyyyy",
- "YEAR=8",
- "Heisei 00008"
- },
+// {
+// "en_US@calendar=japanese",
+// "",
+// "PATTERN=G y",
+// "YEAR=8",
+// "Heisei 8"
+// },
+// {
+// "en_US@calendar=japanese",
+// "",
+// "PATTERN=G yy",
+// "YEAR=8",
+// "Heisei 08"
+// },
+// {
+// "en_US@calendar=japanese",
+// "",
+// "PATTERN=G yyy",
+// "YEAR=8",
+// "Heisei 008"
+// },
+// {
+// "en_US@calendar=japanese",
+// "",
+// "PATTERN=G yyyy",
+// "YEAR=8",
+// "Heisei 0008"
+// },
+// {
+// "en_US@calendar=japanese",
+// "",
+// "PATTERN=G yyyyy",
+// "YEAR=8",
+// "Heisei 00008"
+// },
}
}
Type { "date_format" }
},
}
- Headers { "locale","spec", "date", "str"}
+ Headers { "locale", "zone", "spec", "date", "str"}
// locale: locale including calendar type
+ // zone: time zone name, or "" to not explicitly set zone
// spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG'
// date: either 'MILLIS=####' where #### is millis,
// or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale
// or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis
- // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time
+ // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time,
+ // and any other fields present will be set explicitly.
// str: the expected unicode string
Cases {
{
"en_US@calendar=hebrew",
+ "",
"DATE=FULL,TIME=FULL",
"MILLIS=3076424179200000",
- "Friday, Heshvan 3, 103217 12:00:00 AM GMT-08:00"
+ "Friday, 3 Heshvan 103217 at 12:00:00 AM GMT-08:00"
},
}
}
Type { "date_parse" }
},
}
- Headers { "locale","spec", "date", "str"}
+ Headers { "locale", "zone", "spec", "date", "str"}
// locale: locale including calendar type
+ // zone: time zone name, or "" to not explicitly set zone
// spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG'
// date: either 'MILLIS=####' where #### is millis,
// or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale
// or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis
- // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time
+ // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time,
+ // and any other fields present will be set explicitly.
// str: the expected unicode string
Cases {
{
"en_US@calendar=gregorian",
+ "",
"PATTERN=YYYYHHmmssEEEww",
"YEAR=1999,HOUR_OF_DAY=4,MINUTE=5,SECOND=6,DAY_OF_WEEK=2,WEEK_OF_YEAR=4",
// won't roundtrip.