Java SWT DateTime:确定星期几

Java SWT DateTime: Determine day of Week

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

如果您需要任何其他信息,请告诉我。

谢谢!

使用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) (EE 意思是 "day of week, short version")

Documentation

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 classes 取代了麻烦的旧 date-time classes。

DayOfWeek 枚举定义了七个对象,一个对应一周中的每一天,Monday-Sunday。

LocalDate class 表示没有 time-of-day 和时区的 date-only 值。

DayOfWeek dow = LocalDate.now().getDayOfWeek() ;

生成本地化名称的字符串。

String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;  // Or Locale.US etc.

要暂时生成更长的字符串,请使用 DateTimeFormatter 指定自定义模式,使用 built-in 模式,或自动本地化。

String output = OffsetDateTime.now( ZoneOffset.UTC ).format( DateTimeFormatter.RFC_1123_DATE_TIME ) ;

关于java.time

java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as java.util.Date, Calendar, & SimpleDateFormat.

Joda-Time project, now in maintenance mode, advises migration to the java.time classes.

要了解更多信息,请参阅 Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310

您可以直接与数据库交换 java.time 对象。使用 JDBC driver compliant with JDBC 4.2 或更高版本。不需要字符串,不需要 java.sql.* classes.

从哪里获得java.time classes?

  • Java SE 8, Java SE 9,及以后
    • Built-in。
    • 标准 Java API 的一部分,带有捆绑实施。
    • Java 9 添加了一些小功能和修复。
  • Java SE 6 and Java SE 7
    • java.time 的大部分功能是 back-ported 到 Java ThreeTen-Backport 中的 6 和 7。
  • Android
    • Android java.time classes.
    • 捆绑实施的更高版本
    • 对于较早的 Android (<26),ThreeTenABP project adapts ThreeTen-Backport (mentioned above). See

ThreeTen-Extra project extends java.time with additional classes. This project is a proving ground for possible future additions to java.time. You may find some useful classes here such as Interval, YearWeek, YearQuarter, and more.