Java 向日期添加毫秒
最近,我在给Java 向日期添加毫秒,java,scala,date,Java,Scala,Date,最近,我在给日期添加一些毫秒时,偶然发现了一个奇怪的行为。为什么第二个示例生成的是11:00,而不是12:00 def addWeek(s: String) = { val df = new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm") val utcMillisSinceEpoch = df.parse(s).getTime val weekMillis = 1000L * 60L * 60L * 24L * 7L df.form
日期添加一些毫秒时,偶然发现了一个奇怪的行为。为什么第二个示例生成的是11:00
,而不是12:00
def addWeek(s: String) = {
val df = new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm")
val utcMillisSinceEpoch = df.parse(s).getTime
val weekMillis = 1000L * 60L * 60L * 24L * 7L
df.format(new java.util.Date(utcMillisSinceEpoch + weekMillis))
}
addWeek("2013/10/01 12:00") // 2013/10/08 12:00
addWeek("2013/10/21 12:00") // 2013/10/28 11:00
addWeek("2013/11/21 12:00") // 2013/11/28 12:00
根据您所在的地区,夏令时可能会在该时段结束。DST结束时,重复一小时
看起来你在德国。在该地区,DST将于10月27日(星期日)结束 根据您所在的地区,夏令时可能会在该时段结束。DST结束时,重复一小时
看起来你在德国。在该地区,DST将于10月27日(星期日)结束 夏令时将于10月底结束。因此,第二次addWeek
通话会将日期移到DST结束时。夏令时将在10月底结束。因此,第二次addWeek
呼叫会将您的日期移到DST结束时。这不是对您问题的回答,只是一个旁注:这不是一种可靠的方法来为日期添加一周。由于闰年和DST,周的持续时间可能不同。最好使用gregorianalendar
,并增加week字段。如果你想拥有一个复杂的API,我建议你看看Joda Time
,这是一个应该的日期支持。这不是对你的问题的回答,只是一个旁注:这不是一个可靠的方法来增加一周的日期。由于闰年和DST,周的持续时间可能不同。最好使用gregorianalendar
,并增加week字段。如果你想拥有一个复杂的API,我建议你看看Joda-Time
,这是一个应该有的日期支持。