如何指定区域日期格式



当我在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",寻找更通用的方法。我怎么能这样?

您可能

希望使用区域设置

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;dr

String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ).format( DateTimeFormatter.ofLocalizedDate( FormatStyle.SHORT ).withLocale( Locale.CANADA_FRENCH ) );

问题和其他答案使用旧的过时的类(简单日期格式,日期,日历等)。

而是使用Java 8及更高版本中内置的java.time框架。请参阅甲骨文教程。Java.time的大部分功能在ThreeTen-Backport中向后移植到Java 6和7,并在ThreeTenABP中进一步适应Android。

LocalDate类表示没有时间且没有时区的仅日期值。

要获取当前日期,您需要一个时区。对于任何给定时刻,日期在全球范围内按时区变化。

ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );

要获取标准 ISO 8601 格式 YYYY-MM-DD,请拨打 toString

String output = today.toString();

若要本地化生成的字符串的格式和内容以表示日期值,请使用带有FormatStyleDateTimeFormatter来确定长度(完整、长、中、短)。

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate( FormatStyle.SHORT );

分配特定的Locale,而不是 JVM 的当前默认值。

Locale locale = Locale.CANADA_FRENCH;
formatter = formatter.withLocale( locale );
String output = today.format( formatter );

就是这样,很简单。只需根据需要定义一个Locale,例如Locale.CANADALocale.CANADA_FRENCHLocale.GERMANYLocale.KOREA,或者使用传递人类语言的各种构造函数,以及可选的国家和变体。

从 [http://www.java2s.com/Tutorial/Java/0040__Data-Type/FourdifferentdateformatsforfourcountriesUSUKGERMANYFRANCE.htm ] 中尝试此操作

import static java.util.Locale.*;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
    public class MainClass {
      public static void main(String[] args) {
        Date today = new Date();
        Locale[] locales = { US, UK, GERMANY, FRANCE,JAPAN };
        int[] styles = { FULL, LONG, MEDIUM, SHORT };
        String[] styleNames = { "FULL", "LONG", "MEDIUM", "SHORT" };
        DateFormat fmt = null;
        for (Locale locale : locales) {
          System.out.println("nThe Date for " + locale.getDisplayCountry() + ":");
          for (int i = 0; i < styles.length; i++) {
            fmt = DateFormat.getDateInstance(styles[i], locale);
            System.out.println("tIn " + styleNames[i] + " is " + fmt.format(today));
          }
        }
      }
    }

你需要 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

相关内容

  • 没有找到相关文章

最新更新