为了账号安全,请及时绑定邮箱和手机立即绑定

在 Java 中按星期几从星期一到星期日排序

在 Java 中按星期几从星期一到星期日排序

千巷猫影 2022-06-04 17:13:48
我有以下格式的一天。"Fri 05:00""Tue 10:15""Mon 02:00"我想对从星期一到星期日的这一天进行排序。我尝试过将此日期格式化为SimpleDateFormat format = new SimpleDateFormat("EEE hh:mm");然后我创建了这些日期的列表。然后我在 Comparator 中使用了 Calendar.DAY_OF_WEEK ,但它是从星期日开始的日期而不是星期一开始排序的。
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

定义一个类

没有与 Java 捆绑在一起的类来表示一周中的一天和一天中的时间。捆绑课程需要一个日期。


您将需要定义自己的此类,可能命名为DayOfWeekWithTime. 该类将有两个成员字段,一个DayOfWeek对象和一个LocalTime对象。在 Stack Overflow 上搜索这些课程的许多现有帖子。


public class DayOfWeekWithTime {

    // Member fields

    DayOfWeek dayOfWeek ;

    LocalTime localTime ;


    // Constructor

    public DayOfWeekWithTime ( DayOfWeek dayOfWeek , LocalTime localTime ) {

        Objects.requireNonNull( dayOfWeek ) ;

        Objects.requireNonNull( localTime ) ;

        this.dayOfWeek = dayOfWeek ;

        this.localTime = localTime ;

    }

}

枚举遵循 ISO 8601 标准,因此DayOfWeek一周定义为周一至周日。这符合您想要的排序顺序。DayOfWeekWithTime因此,您可以按该成员字段对对象集合进行排序。见Collections.sort( list , comparator )。在 Stack Overflow 上搜索有关按特定字段对对象进行排序主题的许多现有帖子。


DayOfWeekWithTime要从问题中看到的字符串输入实例化您的对象,请拆分空格字符。见String::split。在 Stack Overflow 上搜索关于拆分字符串主题的许多现有帖子。


然后编写一个例程来查找DayOfWeek每个 3 字母输入值的枚举。你可以写一个if-else-if系列。或者你可以写一个Map< String , DayOfWeek >.


对于一天中的时间,您可以使用LocalTime.parse方法解析。如果使用 24 小时制并在单个数字上填充零,则无需定义格式模式,因为java.time类在解析/生成文本时默认使用标准 ISO 8601 格式。在 Stack Overflow 上搜索有关使用java.time类进行解析的许多现有帖子。


不要使用现在遗留下来的SimpleDateFormat相关可怕的日期时间类,例如Date或Calendar。仅使用java.time类进行日期时间工作。


查看完整回答
反对 回复 2022-06-04
?
www说

TA贡献1775条经验 获得超8个赞

日历有方法

setFirstDayOfWeek(ind day)

你可以使用它:calendar.setFirstDayOfWeek(Calendar.Monday)


查看完整回答
反对 回复 2022-06-04
  • 2 回答
  • 0 关注
  • 486 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号