我有一个3/9/2017的DateTime小部件。根据DateTime的文档,我没有找到确定星期几的方法。我最终需要一个以这种格式解析的字符串" Wed Feb 22 14:57:34 UTC 2017"来自DateTime小部件,但第一步是获取星期几。有没有办法在制作我自己的功能之外做到这一点?如果没有,你会推荐什么作为该功能的最佳方法,因为一周中的几天与每年的日期不一致?
如果您需要任何其他信息,请与我们联系。
谢谢!
答案 0 :(得分:2)
使用java.util.Calendar
:
Calendar c = Calendar.getInstance();
c.setTime(yourDate);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
Tue
而不是3(星期几从1开始编制索引),而不是通过日历,只需重新格式化字符串:new SimpleDateFormat("EE").format(date)
({{1 }含义"星期几,短版本")答案 1 :(得分:0)
LocalDate.of( 2017 , Month.MARCH , 9 )
.getDayOfWeek()
.getDisplayName( TextStyle.FULL , Locale.ITALY )
或者...
OffsetDateTime.now( ZoneOffset.UTC )
.format( DateTimeFormatter.RFC_1123_DATE_TIME )
现代方法使用 java.time 类来取代麻烦的旧日期时间类。
DayOfWeek
枚举定义了七个对象,一个星期一到星期日,每周一个。
LocalDate
类表示没有时间且没有时区的仅限日期的值。
DayOfWeek dow = LocalDate.now().getDayOfWeek() ;
生成本地化名称的字符串。
String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ; // Or Locale.US etc.
要暂时生成较长的字符串,请使用DateTimeFormatter
指定自定义模式,使用内置模式或自动进行本地化。
String output = OffsetDateTime.now( ZoneOffset.UTC ).format( DateTimeFormatter.RFC_1123_DATE_TIME ) ;
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*
类。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。