【问题标题】:get day name from string date using jodatime [duplicate]使用jodatime从字符串日期获取日期名称[重复]
【发布时间】:2016-08-31 22:01:12
【问题描述】:

我有这样的字符串日期

String s = "29-08-2016";

期望的结果是星期几的名称:

星期一

如何解决?

【问题讨论】:

  • 这听起来基本上是另一个“解析和重新格式化”问题,其中“输出格式”只是星期几。到目前为止,您尝试过什么吗?你尝试了什么,发生了什么?您是否查看过其他重新格式化问题并尝试应用相同的技术,只是使用您的特定格式?
  • 检查我的答案中的代码,它会为你工作。
  • 如果可以使用joda lib sir,我想找到简单的方法
  • 听起来类似于question。您只需将字符串解析为LocalDate,然后使用链接确定星期几的名称。

标签: java date jodatime


【解决方案1】:

不使用 JODA 库,简单的 java 代码获取星期几的名称。

String s = "28-08-2016";
Date date = new SimpleDateFormat("d-M-yyyy").parse(s);
String dayOfWeek = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(date);
System.out.println(dayOfWeek); // Monday

【讨论】:

  • 为什么先拆开再组装?为什么不解析原始字符串?
  • 现在我喜欢它。 ;-)
  • @MarkusMitterauer 感谢您的建议:)
【解决方案2】:

Joda 轻松外卖

String date = "29-08-2016";
LocalDate localDate = DateTimeFormat.forPattern("dd-MM-yyyy").parseLocalDate(date);
System.out.println(DateTimeFormat.forPattern("EEEE").print(localDate));

打印:星期一

【讨论】:

  • 啊哈,这是优雅的方法,谢谢先生
【解决方案3】:

java.time

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

首先将输入字符串解析成LocalDate

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu" );
LocalDate ld = LocalDate.parse( input , f );

现在查询由 DayOfWeek 枚举对象表示的星期几。

DayOfWeek dow = ld.getDayOfWeek();

要求该对象生成本地化名称。

Locale l = Locale.US;  // Or Locale.CANADA_FRENCH etc.
TextStyle ts = TextStyle.FULL_STANDALONE;
String output = ld.getDisplayName( ts , l );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-13
    • 2019-11-09
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 2012-02-27
    相关资源
    最近更新 更多