Java 如何指定区域日期格式?
当我在java将日期转换为字符串并应用以下模式时:Java 如何指定区域日期格式?,java,string,date,timezone,Java,String,Date,Timezone,当我在java将日期转换为字符串并应用以下模式时: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 产出:2016-07-14 但我想做到如下 Japan, Korea user : 2016-07-14 USA, Canada user : 07-14-2016 Germany, Australia user : 14-07-2016 我可以设置“if~ else”模式,寻找更一般的方法。 我怎么能这样做呢?从[]试试这
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
产出:2016-07-14
但我想做到如下
Japan, Korea user : 2016-07-14
USA, Canada user : 07-14-2016
Germany, Australia user : 14-07-2016
我可以设置“if~ else”模式,寻找更一般的方法。
我怎么能这样做呢?从[]试试这个
导入静态java.util.Locale.*;
导入java.text.DateFormat;
导入java.util.Date;
导入java.util.Locale;
公共类主类{
公共静态void main(字符串[]args){
今天日期=新日期();
地区[]地区={美国、英国、德国、法国、日本};
int[]样式={FULL,LONG,MEDIUM,SHORT};
String[]styleNames={“FULL”、“LONG”、“MEDIUM”、“SHORT”};
DateFormat fmt=null;
for(区域设置:区域设置){
System.out.println(“\n”+locale.getDisplayCountry()+“:”的日期);
对于(int i=0;i
从[]尝试此操作
导入静态java.util.Locale.*;
导入java.text.DateFormat;
导入java.util.Date;
导入java.util.Locale;
公共类主类{
公共静态void main(字符串[]args){
今天日期=新日期();
地区[]地区={美国、英国、德国、法国、日本};
int[]样式={FULL,LONG,MEDIUM,SHORT};
String[]styleNames={“FULL”、“LONG”、“MEDIUM”、“SHORT”};
DateFormat fmt=null;
for(区域设置:区域设置){
System.out.println(“\n”+locale.getDisplayCountry()+“:”的日期);
对于(int i=0;i
您需要3个SimpleDataFormat
:
public static void main(String[] args) {
// Japan, Korea user : 2016-07-14
SimpleDateFormat korea = new SimpleDateFormat("yyyy-MM-dd");
// USA, Canada user : 07-14-2016
SimpleDateFormat usa = new SimpleDateFormat("MM-dd-yyyy");
// Germany, Australia user : 14-07-2016
SimpleDateFormat europe = new SimpleDateFormat("dd-MM-yyyy");
System.out.println("Japan, Korea user : " + korea.format(new Date()));
System.out.println("USA, Canada user : " + usa.format(new Date()));
System.out.println("Germany, Australia user : " + europe.format(new Date()));
}
输出:
Japan, Korea user : 2016-07-14
USA, Canada user : 07-14-2016
Germany, Australia user : 14-07-2016
您需要3个SimpleDateFormat:
public static void main(String[] args) {
// Japan, Korea user : 2016-07-14
SimpleDateFormat korea = new SimpleDateFormat("yyyy-MM-dd");
// USA, Canada user : 07-14-2016
SimpleDateFormat usa = new SimpleDateFormat("MM-dd-yyyy");
// Germany, Australia user : 14-07-2016
SimpleDateFormat europe = new SimpleDateFormat("dd-MM-yyyy");
System.out.println("Japan, Korea user : " + korea.format(new Date()));
System.out.println("USA, Canada user : " + usa.format(new Date()));
System.out.println("Germany, Australia user : " + europe.format(new Date()));
}
输出:
Japan, Korea user : 2016-07-14
USA, Canada user : 07-14-2016
Germany, Australia user : 14-07-2016
你可以用语言环境
Locale locale = Locale.KOREA; // select any locale you want
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
String formattedDate = df.format(yourDate);
System.out.println(formattedDate);
你可以用语言环境
Locale locale = Locale.KOREA; // select any locale you want
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
String formattedDate = df.format(yourDate);
System.out.println(formattedDate);
tl;博士
细节
这个问题和其他答案使用的是过时的类(SimpleDateFormat、Date、Calendar等)
相反,请使用内置于Java8及更高版本中的框架。看见大部分java.time功能都在中向后移植到Java6和Java7,并在中进一步适应Android
LocalDate
类表示一个只包含日期的值,不包含一天中的时间和时区
ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
要获取当前日期,您需要时区。对于任何一个给定的时刻,全球各地的日期都因时区而异
ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
要获取标准ISO 8601格式YYYY-MM-DD,请调用toString
String output = today.toString();
要确定生成的字符串的长度以表示日期值,请使用a和a来确定长度(完整、长、中、短)
指定一个特定的值,而不是JVM的当前默认值
Locale locale = Locale.CANADA_FRENCH;
formatter = formatter.withLocale( locale );
String output = today.format( formatter );
就这样,很简单。只需根据需要定义一个Locale
,例如Locale.CANADA
,Locale.CANADA\u FRENCH
,Locale.GERMANY
,Locale.KOREA
,或者在传递人类语言的地方使用各种构造函数,还可以选择传递国家和变体。tl;博士
细节
这个问题和其他答案使用的是过时的类(SimpleDateFormat、Date、Calendar等)
相反,请使用内置于Java8及更高版本中的框架。看见大部分java.time功能都在中向后移植到Java6和Java7,并在中进一步适应Android
LocalDate
类表示一个只包含日期的值,不包含一天中的时间和时区
ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
要获取当前日期,您需要时区。对于任何一个给定的时刻,全球各地的日期都因时区而异
ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
要获取标准ISO 8601格式YYYY-MM-DD,请调用toString
String output = today.toString();
要确定生成的字符串的长度以表示日期值,请使用a和a来确定长度(完整、长、中、短)
指定一个特定的值,而不是JVM的当前默认值
Locale locale = Locale.CANADA_FRENCH;
formatter = formatter.withLocale( locale );
String output = today.format( formatter );
就这样,很简单。只需根据需要定义一个Locale
,例如Locale.CANADA
,Locale.CANADA\u FRENCH
,Locale.GERMANY
,Locale.KOREA
,或者在传递人类语言的地方使用各种构造函数,还可以选择传递国家和变体