java将日期设置为每周的第二天
我正在使用firebase并使用Android构建一个应用程序
我有一个DatePicker
,在那里我可以选择一周中的哪一天、每小时和每分钟
选择日期并按submit时,我希望存储的不是当前日期,甚至不是所选日期,而是与所选星期日相关的下一个日期
假设我选择星期四,明天是星期四,我想保存当前用户选择的日期和时间
当时我试过这样的方法:
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, dayOfWeek);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
dateMatch = calendar.getTime();
小时和分钟都可以,但是我如何存储下一天/月/年
# 1 楼答案
tl;博士
^{} 类在该区域中调整一天中的时间(如果对该日期无效)
爪哇。时间
现代方法使用java。时间课。避免问题中出现的麻烦的旧遗留日期时间类
^{} 类表示一个只包含日期的值,不包含一天中的时间和时区
时区对于确定日期至关重要。在任何一个特定的时刻,世界各地的日期都因地区而异。例如,在Paris France午夜后几分钟是新的一天,而在Montréal Québec仍然是“昨天”
以} 、^{} 或
continent/region
的格式指定一个proper time zone name,例如^{Pacific/Auckland
。切勿使用3-4个字母的缩写,如EST
或IST
,因为它们不是真正的时区,没有标准化,甚至不是唯一的(!)确定UI小部件表示的
DayOfWeek
枚举对象。如果按编号进行跟踪,则根据ISO 8601标准,周一至周日的课程编号为1-7使用
TemporalAdjusters
中的TemporalAdjuster
确定一周中同一天的下一个日期从小时和分钟数中实例化一个
LocalTime
组合以确定时间轴中的实际时刻
由于夏令时(DST)等异常情况,您一天中的特定时间可能在该区域的该日期无效。
ZonedDateTime
类会根据需要进行调整。请务必阅读班级文档,以了解其在进行调整时的政策您可以使用标准ISO 8601格式将该对象序列化为文本,该格式由此类扩展,以便在方括号中附加时区名称
通过解析这些字符串来重新构造对象
关于java。时间
java.time框架内置于Java8和更高版本中。这些类取代了麻烦的旧legacy日期时间类,如^{} 、^{} 、&^{}
现在位于maintenance mode的Joda-Time项目建议迁移到java.time类
要了解更多信息,请参阅Oracle Tutorial。并搜索堆栈溢出以获得许多示例和解释。规范是JSR 310
在哪里可以获得java。时间课