我有两个时间戳,以两种不同的格式描述相同的时刻.
2010-10-03 18:58:07和2010-10-03T16:58:07.000+02:00.
我使用Joda-Time解析时间戳和两个不同的日期格式化程序.最后,我希望有两个DateTime对象,它们在同一时刻是相等的.
DateFormatter提供了几种控制时区和语言环境的方法,但我无法使其工作.
这是我想要的代码:
final String date1 = "2010-10-03 18:58:07"; // Europe/Berlin local time
final DateTimeFormatter formatter1 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
final DateTime dateTime1 = formatter1.parseDateTime(date1);
final String date2 = "2010-10-03T16:58:07.000+02:00"; // Europe/Berlin local time with time zone
final DateTimeFormatter formatter2 = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
final DateTime dateTime2 = formatter2.parseDateTime(date2);
Assert.assertTrue(dateTime1.isEqual(dateTime2));
Run Code Online (Sandbox Code Playgroud) 我有一个要求,我需要在工作日的上午9点到下午5点之间运行Java程序。时区将始终为UTC。该程序应从上午9点开始,并应在下午5点之前结束。如果无法在下午5点之前完成,则应睡到第二天08:59:59。如果第二天是周末,那么应该从星期一开始。
使用Joda时间的两个日期之间以秒为单位的文章差异?解释了如何获取两个预定义日期之间的秒差,但是我一直想计算下一个工作日上午9点与当前时间之间的差。
我正在考虑通过计算两个日期之间的时间差来使用Thread.sleep()。是否有一个Joda Time API,可以用来计算两个日期之间的时差?
我已经尝试获取当前工作日和第二天上午9点(如果它是工作日),计算这两个纪元之间的差,并将该值用于Thread.sleep,但这有点混乱。
以下是我使用的伪代码
getNextDayEpoch函数包含if / else代码,使用确定日期是工作日/周末java来确定是工作日还是周末
根据是工作日还是周末,我得到相应的纪元值。
currentEpoch = getCurrentEpoch()
nextDayEpoch = getNextDayEpoch()
difference = nextDayEpoch - currentDayEpoch
try {
Thread.sleep(difference);
} catch (InterruptedException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
您能提出更好的建议吗?