2017-02-21 86 views
2

我正在尝试以下列格式检索当前日期:21-FEB-17以特定格式获取当前日期

我有以下代码,但它不是我需要的格式。它打印出的格式如下:21-February-17.

Format formatter = new SimpleDateFormat("dd-MMMM-yy"); 
String today = formatter.format(new Date()); 
System.out.println(today); 
+1

我会建议使用新的Java 8时间的方法。 https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html 在那里你可以使用https://docs.oracle.com/javase/8/docs/api/ java/time/format/DateTimeFormatter.html –

回答

3

为了得到这个月的 “前3个字母”,你应该使用

Format formatter = new SimpleDateFormat("dd-MMM-yy"); 

根据Oracle documentation of SimpleDateFormat

这将在“骆驼”情况下(即“Feb”)打印月份。如果你想在全部大写,你需要做的

System.out.println(today.toUpperCase()); 
+0

非常感谢! – robben

2

你的格式有和额外M

Format formatter = new SimpleDateFormat("dd-MMM-yy"); 
String today = formatter.format(new Date()); 
System.out.println(today.toUpperCase()); 
+1

谢谢你,先生! – robben

2

这里是link,以帮助您更好地了解。

并回答你的问题使用下面的代码。

Format formatter = new SimpleDateFormat("dd-MMM-yy"); 
String today = formatter.format(new Date()); 
System.out.println(today.toUpperCase()); 
1

这不是你要求的答案,但它可能是你想要的答案。 :-)由于博扬佩特科维奇已经在评论已经说了,如果有什么办法可以使用Java 8中,您将要使用的新java.time类:

final Locale myLocale = Locale.US; 
    String today = LocalDate.now() 
      .format(DateTimeFormatter.ofPattern("d-MMM-yy", myLocale)) 
      .toUpperCase(myLocale); 
    System.out.println(today); 

此打印:

22-FEB-17 

你会注意到我为格式化程序显式使用了一个语言环境对象,并将其转换为大写字母。你最清楚你想使用哪种语言环境。您也可以在两个地方忽略语言环境参数,然后使用计算机的默认语言环境(这样您将在不同的计算机上获得不同的结果)。对于语言环境中性格式,请使用Locale.ROOT(它将更像Locale.US)。