是否有日期格式可以用Java显示星期几?


127

我知道日期格式,例如
"yyyy-mm-dd"-以格式2011-02-26
"yyyy-MMM-dd"显示日期-以格式显示日期2011-FEB-26

用于例如:

SimpleDateFormat formatter = new SimpleDateFormat(
                "yyyy/MMM/dd ");

我想要一种可以帮助我显示星期几之类的格式2011-02-MON。我只希望将星期几与月份和年份一起显示。你能告诉我这样的格式吗?


1
只是使用ddas格式呢?
JohanSjöberg

3
我确定API文档(download.oracle.com/javase/1.4.2/docs/api/java/text/…)将很乐意为您提供答案。
M. Jessup

1
您是什么意思“天”-星期几,一个月中的某天。在您的示例中,将显示整个日期。请显示所需的确切输入和输出。
2011年

2
一般建议,最好-仅在ISO格式的日期(即年-月-日)中使用该符号。破折号当选有,因为它不用于任何其他日期格式的时候,为了避免混淆,现在大家都在用自己的自定义排序与破折号...
圣保罗Ebermann

Answers:


321

这应该显示“ Tue”:

new SimpleDateFormat("EEE").format(new Date());

这应该显示“星期二”:

new SimpleDateFormat("EEEE").format(new Date());

这应该显示“ T”:

new SimpleDateFormat("EEEEE").format(new Date());

因此,您的具体示例为:

new SimpleDateFormat("yyyy-MM-EEE").format(new Date());

5
美丽的解决方案!我正在寻找的是:2016年4月4日,星期一。因此,就我而言,new SimpleDateFormat("EEEE, dd/MM/yyyy");如果将来对某人有所帮助。
AuroMetal '16

1
好的,可以。EEEE显示星期几的全名- “星期一”即“星期二”等等
kosiara -巴尔托什Kosarzycki

我还没有真正考虑过这个站点会出现,更不用说java最终会在Date上发布了。从技术上讲,它确实回答了OP的问题。但是,我可能可以添加有关新java.time东西如何工作的新章节
Nathan Feger


4
SimpleDateFormat sdf=new SimpleDateFormat("EEE");

EEE代表星期几,例如星期四显示为星期四。



3

tl; dr

LocalDate.of( 2018 , Month.JANUARY , 23 )
         .format( DateTimeFormatter.ofPattern( uuuu-MM-EEE , Locale.US )  )

java.time

现代方法使用java.time类。

LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ;

注意我们如何指定Locale诸如这样Locale.CANADA_FRENCH的名称来确定用于翻译当天名称的人类语言。

DateTimeFormatter f = DateTimeFormatter.ofPattern( uuuu-MM-EEE , Locale.US ) ;
String output = ld.format( f ) ;

ISO 8601

顺便说一下,您可能对标准的ISO 8601周编号方案感兴趣:yyyy-Www-d

2018-W01-2

第一周是日历年的第一个星期四。周从星期一开始。一年有52周或53周。日历年的最后/前几天可能会落入下一个/上一个基于周的年份。

末尾的一位数字是星期几,星期一至星期日为1-7。

ThreeTen-Extra库类添加到该类的项目中YearWeek


关于java.time

java.time框架是建立在Java 8和更高版本。这些类取代麻烦的老传统日期时间类,如java.util.DateCalendar,和SimpleDateFormat

现在处于维护模式Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310

在哪里获取java.time类?

ThreeTen-额外项目与其他类扩展java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。你可能在这里找到一些有用的类,比如IntervalYearWeekYearQuarter,和更多


2

我知道问题在于将星期几作为字符串(例如简称),但是对于正在寻找星期几(例如我)的数字的任何人,您都可以使用支持的新“ u”格式字符串从Java 7开始。例如:

new SimpleDateFormat("u").format(new Date());

返回今天的星期几索引,即:1 =星期一,2 =星期二,...,7 =星期日。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.