首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java DateFormat.SHORT全年版

Java DateFormat.SHORT全年版
EN

Stack Overflow用户
提问于 2010-08-31 19:54:37
回答 3查看 16.2K关注 0票数 5

有没有办法使DateFormat格式的日期与完整的一年(例如,12/12/2010),什么时候使用DateFormat.SHORT作为模式?我必须在en_US和da_DK中格式化日期。

我知道我可以使用DateFormat.MEDIUM,但日期必须只使用数字和分隔符进行格式化,而en_US的DateFormat.MEDIUM生成的结果类似于'Dec 12,2010‘。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-31 20:01:43

如果两种格式相同,则只需使用:

代码语言:javascript
复制
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");

如果它们不同:

代码语言:javascript
复制
private static Map<Locale, String> formats = new HashMap<Locale, String>();

static {
    formats.put(new Locale("en_US"), "MM/dd/yyyy");
    formats.put(new Locale("da_DK"), "dd.MM.yyyy");
}

然后不使用DateFormat.getDateInstance(..),而是使用

代码语言:javascript
复制
new SimpleDateFormat(formats.get(locale)).format(..);
票数 6
EN

Stack Overflow用户

发布于 2015-11-06 19:58:55

java.time

您可以使用java.time类来替代旧的date-time类。使用从DateTimeFormatterBuilder派生的DateTimeFormatter而不是DateFormat

DateTimeFormatterBuilder可以提供一个可以与DateTimeFormatter一起使用的模式。使用String.replace,您可以在FormatStyle.SHORT日期模式中插入yyyy而不是yy

代码语言:javascript
复制
        String pattern =
            DateTimeFormatterBuilder
                .getLocalizedDateTimePattern
                    ( FormatStyle.SHORT
                    , null
                    , IsoChronology.INSTANCE
                    , locale
                    );
        pattern = pattern.replace("yy", "yyyy");
        DateTimeFormatter dtf =
            DateTimeFormatter.ofPattern(pattern);
票数 6
EN

Stack Overflow用户

发布于 2018-09-17 07:59:10

http://www.java2s.com/Tutorials/Java/Data_Type_How_to/Legacy_Date/Display_the_year_in_full_four_digits_when_using_localization.htm

代码语言:javascript
复制
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
    if (df instanceof SimpleDateFormat) {
      SimpleDateFormat sdf = (SimpleDateFormat) df;
      // To show Locale specific short date expression with full year
      String pattern = sdf.toPattern().replaceAll("y+", "yyyy");
      sdf.applyPattern(pattern);
      return sdf.format(cal.getTime());
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3608716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档