Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何指定区域日期格式?_Java_String_Date_Timezone - Fatal编程技术网

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”模式,寻找更一般的方法。 我怎么能这样做呢?从[]试试这

当我在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”模式,寻找更一般的方法。 我怎么能这样做呢?

从[]试试这个

导入静态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
,或者在传递人类语言的地方使用各种构造函数,还可以选择传递国家和变体