【问题标题】:Java SWT DateTime: Determine day of WeekJava SWT DateTime:确定星期几
【发布时间】:2017-03-09 16:43:19
【问题描述】:

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

如果您需要任何补充信息,请告诉我。

谢谢!

【问题讨论】:

标签: java parsing datetime swt dayofweek


【解决方案1】:

使用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 意思是“天周,短版”)

Documentation

【讨论】:

  • 嗯,是的,我认为这会奏效。我的脑子里放了个屁,本来我觉得这种方法不可行,但我觉得这对我有好处。只要系统说可以,我就会接受答案并关闭问题。谢谢!
  • 仅供参考,麻烦的旧日期时间类,如 java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 现在是 legacy,被 Java 8 和 Java 中内置的 java.time 类所取代9. 见Tutorial by Oracle
【解决方案2】:

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.DateCalendarSimpleDateFormat

Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

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

从哪里获得 java.time 类?

  • Java SE 8Java SE 9 及更高版本
    • 内置。
    • 标准 Java API 的一部分,带有捆绑实现。
    • Java 9 添加了一些小功能和修复。
  • Java SE 6Java SE 7
  • Android
    • java.time 类的 Android 捆绑包实现的更高版本。
    • 对于早期的 Android (ThreeTenABP 项目采用 ThreeTen-Backport(如上所述)。见How to use ThreeTenABP…

ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore

【讨论】:

    猜你喜欢
    • 2016-06-27
    • 2011-06-06
    • 1970-01-01
    • 2013-02-14
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多