8007392: JSR 310: DateTime API Updates
8007520: Update date/time classes in j.util and j.sql packages
8007572: Replace existing jdk timezone data at <java.home>/lib/zi with JSR310's tzdb
Summary: Integration of JSR310 Date/Time API for M7
Reviewed-by: darcy, alanb, naoto
Contributed-by: scolebourne@joda.org, roger.riggs@oracle.com, masayoshi.okutsu@oracle.com, patrick.zhang@oracle.com
/*
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1999 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources;
import java.util.ListResourceBundle;
public class FormatData extends ListResourceBundle {
/**
* Overrides ListResourceBundle
*/
@Override
protected final Object[][] getContents() {
// Julian calendar era strings
final String[] julianEras = {
"BC",
"AD"
};
// Thai Buddhist calendar era strings
final String[] buddhistEras = {
"BC", // BC
"B.E." // Buddhist Era
};
// Japanese imperial calendar era abbreviations
final String[] japaneseEraAbbrs = {
"",
"M",
"T",
"S",
"H",
};
// Japanese imperial calendar era strings
final String[] japaneseEras = {
"",
"Meiji",
"Taisho",
"Showa",
"Heisei",
};
// Minguo era strings
final String[] rocEras ={
"Before R.O.C.",
"R.O.C.",
};
return new Object[][] {
{ "MonthNames",
new String[] {
"January", // january
"February", // february
"March", // march
"April", // april
"May", // may
"June", // june
"July", // july
"August", // august
"September", // september
"October", // october
"November", // november
"December", // december
"" // month 13 if applicable
}
},
{ "MonthAbbreviations",
new String[] {
"Jan", // abb january
"Feb", // abb february
"Mar", // abb march
"Apr", // abb april
"May", // abb may
"Jun", // abb june
"Jul", // abb july
"Aug", // abb august
"Sep", // abb september
"Oct", // abb october
"Nov", // abb november
"Dec", // abb december
"" // abb month 13 if applicable
}
},
{ "DayNames",
new String[] {
"Sunday", // Sunday
"Monday", // Monday
"Tuesday", // Tuesday
"Wednesday", // Wednesday
"Thursday", // Thursday
"Friday", // Friday
"Saturday" // Saturday
}
},
{ "DayAbbreviations",
new String[] {
"Sun", // abb Sunday
"Mon", // abb Monday
"Tue", // abb Tuesday
"Wed", // abb Wednesday
"Thu", // abb Thursday
"Fri", // abb Friday
"Sat" // abb Saturday
}
},
{ "DayNarrows",
new String[] {
"S",
"M",
"T",
"W",
"T",
"F",
"S",
}
},
{ "AmPmMarkers",
new String[] {
"AM", // am marker
"PM" // pm marker
}
},
{ "narrow.AmPmMarkers",
new String[] {
"a", // am marker
"p" // pm marker
}
},
{ "Eras",
julianEras },
{ "cldr.long.Eras",
new String[] {
"Before Christ",
"Anno Domini"
}
},
{ "cldr.short.Eras",
julianEras },
{ "narrow.Eras",
new String[] {
"B",
"A",
}
},
{ "buddhist.Eras",
buddhistEras
},
{ "buddhist.short.Eras",
buddhistEras
},
{ "buddhist.narrow.Eras",
buddhistEras
},
{ "japanese.Eras",
japaneseEras },
{ "cldr.japanese.long.Eras",
japaneseEras },
{ "cldr.japanese.short.Eras",
japaneseEras },
{ "japanese.short.Eras",
japaneseEraAbbrs
},
{ "japanese.narrow.Eras",
japaneseEraAbbrs
},
{ "japanese.FirstYear",
new String[] { // Japanese imperial calendar year name
// empty in English
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###;-#,##0.###", // decimal pattern
"\u00a4 #,##0.00;-\u00a4 #,##0.00", // currency pattern
"#,##0%" // percent pattern
}
},
{ "DefaultNumberingSystem", "" },
{ "NumberElements",
new String[] {
".", // decimal separator
",", // group (thousands) separator
";", // list separator
"%", // percent sign
"0", // native 0 digit
"#", // pattern digit
"-", // minus sign
"E", // exponential
"\u2030", // per mille
"\u221e", // infinity
"\ufffd" // NaN
}
},
{ "arab.NumberElements",
new String[] {
"\u066b",
"\u066c",
"\u061b",
"\u066a",
"\u0660",
"#",
"-",
"\u0627\u0633",
"\u0609",
"\u221e",
"NaN",
}
},
{ "arabext.NumberElements",
new String[] {
"\u066b",
"\u066c",
"\u061b",
"\u066a",
"\u06f0",
"#",
"-",
"\u00d7\u06f1\u06f0^",
"\u0609",
"\u221e",
"NaN",
}
},
{ "bali.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1b50",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "beng.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u09e6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "cham.NumberElements",
new String[] {
".",
",",
";",
"%",
"\uaa50",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "deva.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0966",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "fullwide.NumberElements",
new String[] {
".",
",",
";",
"%",
"\uff10",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "gujr.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0ae6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "guru.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0a66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "java.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua9d0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "kali.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua900",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "khmr.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u17e0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "knda.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0ce6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "laoo.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0ed0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "lana.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1a80",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "lanatham.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1a90",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "latn.NumberElements",
new String[] {
".", // decimal separator
",", // group (thousands) separator
";", // list separator
"%", // percent sign
"0", // native 0 digit
"#", // pattern digit
"-", // minus sign
"E", // exponential
"\u2030", // per mille
"\u221e", // infinity
"\ufffd" // NaN
}
},
{ "lepc.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1c40",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "limb.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1946",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mlym.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0d66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mong.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1810",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mtei.NumberElements",
new String[] {
".",
",",
";",
"%",
"\uabf0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mymr.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1040",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mymrshan.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1090",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "nkoo.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u07c0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "olck.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1c50",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "orya.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0b66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "saur.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua8d0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "sund.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1bb0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "talu.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u19d0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "tamldec.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0be6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "telu.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0c66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "thai.NumberElements",
new String[] {
".", // decimal separator
",", // group (thousands) separator
";", // list separator
"%", // percent sign
"\u0E50", // native 0 digit
"#", // pattern digit
"-", // minus sign
"E", // exponential
"\u2030", // per mille
"\u221e", // infinity
"\ufffd" // NaN
}
},
{ "tibt.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0f20",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "vaii.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua620",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "TimePatterns",
new String[] {
"h:mm:ss a z", // full time pattern
"h:mm:ss a z", // long time pattern
"h:mm:ss a", // medium time pattern
"h:mm a", // short time pattern
}
},
{ "DatePatterns",
new String[] {
"EEEE, MMMM d, yyyy", // full date pattern
"MMMM d, yyyy", // long date pattern
"MMM d, yyyy", // medium date pattern
"M/d/yy", // short date pattern
}
},
{ "DateTimePatterns",
new String[] {
"{1} {0}" // date-time pattern
}
},
{ "buddhist.TimePatterns",
new String[] {
"H:mm:ss z", // full time pattern
"H:mm:ss z", // long time pattern
"H:mm:ss", // medium time pattern
"H:mm", // short time pattern
}
},
{ "cldr.buddhist.DatePatterns",
new String[] {
"EEEE, G y MMMM dd",
"G y MMMM d",
"G y MMM d",
"GGGGG yyyy-MM-dd",
}
},
{ "buddhist.DatePatterns",
new String[] {
"EEEE d MMMM G yyyy", // full date pattern
"d MMMM yyyy", // long date pattern
"d MMM yyyy", // medium date pattern
"d/M/yyyy", // short date pattern
}
},
{ "buddhist.DateTimePatterns",
new String[] {
"{1}, {0}" // date-time pattern
}
},
{ "japanese.TimePatterns",
new String[] {
"h:mm:ss a z", // full time pattern
"h:mm:ss a z", // long time pattern
"h:mm:ss a", // medium time pattern
"h:mm a", // short time pattern
}
},
{ "cldr.japanese.DatePatterns",
new String[] {
"EEEE, G y MMMM dd",
"G y MMMM d",
"G y MMM d",
"GGGGG yy-MM-dd",
}
},
{ "japanese.DatePatterns",
new String[] {
"GGGG yyyy MMMM d (EEEE)", // full date pattern
"GGGG yyyy MMMM d", // long date pattern
"GGGG yyyy MMM d", // medium date pattern
"Gy.MM.dd", // short date pattern
}
},
{ "japanese.DateTimePatterns",
new String[] {
"{1} {0}" // date-time pattern
}
},
{ "roc.Eras", rocEras },
{ "roc.short.Eras", rocEras },
{ "cldr.roc.DatePatterns",
new String[] {
"EEEE, G y MMMM dd",
"G y MMMM d",
"G y MMM d",
"GGGGG yyy-MM-dd",
}
},
{ "roc.DatePatterns",
new String[] {
"EEEE, GGGG y MMMM dd",
"GGGG y MMMM d",
"GGGG y MMM d",
"G yyy-MM-dd",
}
},
{ "islamic.MonthNames",
new String[] {
"Muharram",
"Safar",
"Rabi\u02bb I",
"Rabi\u02bb II",
"Jumada I",
"Jumada II",
"Rajab",
"Sha\u02bbban",
"Ramadan",
"Shawwal",
"Dhu\u02bbl-Qi\u02bbdah",
"Dhu\u02bbl-Hijjah",
"",
}
},
{ "islamic.MonthAbbreviations",
new String[] {
"Muh.",
"Saf.",
"Rab. I",
"Rab. II",
"Jum. I",
"Jum. II",
"Raj.",
"Sha.",
"Ram.",
"Shaw.",
"Dhu\u02bbl-Q.",
"Dhu\u02bbl-H.",
"",
}
},
{ "islamic.Eras",
new String[] {
"",
"AH",
}
},
{ "cldr.islamic.DatePatterns",
new String[] {
"EEEE, MMMM d, y G",
"MMMM d, y G",
"MMM d, y G",
"M/d/yy G",
}
},
{ "islamic.DatePatterns",
new String[] {
"EEEE, MMMM d, y GGGG",
"MMMM d, y GGGG",
"MMM d, y GGGG",
"M/d/yy GGGG",
}
},
{ "DateTimePatternChars", "GyMdkHmsSEDFwWahKzZ" },
{ "calendarname.islamic-civil", "Islamic-Civil Calendar" },
{ "calendarname.islamicc", "Islamic-Civil Calendar" },
{ "calendarname.islamic", "Islamic Calendar" },
{ "calendarname.japanese", "Japanese Calendar" },
{ "calendarname.gregorian", "Gregorian Calendar" },
{ "calendarname.gregory", "Gregorian Calendar" },
{ "calendarname.roc", "Minguo Calendar" },
{ "calendarname.buddhist", "Buddhist Calendar" },
{ "field.era", "Era" },
{ "field.year", "Year" },
{ "field.month", "Month" },
{ "field.week", "Week" },
{ "field.weekday", "Day of the Week" },
{ "field.dayperiod", "Dayperiod" },
{ "field.hour", "Hour" },
{ "field.minute", "Minute" },
{ "field.second", "Second" },
{ "field.zone", "Zone" },
};
}
}