Java SWT DateTime:确定星期几

时间:2017-03-09 16:43:20

标签: java parsing datetime swt dayofweek

我有一个3/9/2017的DateTime小部件。根据DateTime的文档,我没有找到确定星期几的方法。我最终需要一个以这种格式解析的字符串" Wed Feb 22 14:57:34 UTC 2017"来自DateTime小部件,但第一步是获取星期几。有没有办法在制作我自己的功能之外做到这一点?如果没有,你会推荐什么作为该功能的最佳方法,因为一周中的几天与每年的日期不一致?

如果您需要任何其他信息,请与我们联系。

谢谢!

2 个答案:

答案 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 }含义"星期几,短版本")

Documentation

答案 1 :(得分:0)

TL;博士

LocalDate.of( 2017 , Month.MARCH , 9 )
    .getDayOfWeek()
    .getDisplayName( TextStyle.FULL , Locale.ITALY )

或者...

OffsetDateTime.now( ZoneOffset.UTC )
    .format( DateTimeFormatter.RFC_1123_DATE_TIME )

java.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.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance 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的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore

相关问题