初始化java.util.Calendar为May, 31 1900.然后再加一年二十次.
这是代码:
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.*
fun main(args : Array<String>) {
val f = SimpleDateFormat("yyyy.dd.MM")
val cal = Calendar.getInstance()
cal.set(1900, Calendar.MAY, 31)
for(i in 1..20) {
println(f.format(cal.time))
cal.add(Calendar.YEAR, 1)
}
}
Run Code Online (Sandbox Code Playgroud)
输出如下:
1900.31.05
1901.31.05
1902.31.05
1903.31.05
1904.31.05
1905.31.05
1906.31.05
1907.31.05
1908.31.05
1909.31.05
1910.31.05
1911.31.05
1912.31.05
1913.31.05
1914.31.05
1915.31.05
1916.31.05
1917.31.05
1918.01.06
1919.01.06
Run Code Online (Sandbox Code Playgroud)
为什么我从1918年开始到6月1日而不是5月31日?
UPD:有时间信息
1917.31.05 23:38:50.611
1918.01.06 01:38:50.611
Run Code Online (Sandbox Code Playgroud)
如果这是DST的发明,我该如何预防呢?
您似乎在一个时区中运行您的代码,该时区在1917年或1918年将其偏移量改变了两个小时.也就是说,UTC前后的小时数发生了变化.我不知道为什么你的时区会这样做,但我确信它有一个很好的历史原因.
如果您只对日期感兴趣而没有时间组件,请使用java.time.LocalDate该类,该类实际上仅代表日,月和年.它不受任何夏令时异常的影响.
LocalDate today = LocalDate.now();
Run Code Online (Sandbox Code Playgroud)
要么
LocalDate moonLanding = LocalDate.of(1969, 7, 20);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |