2 aiqqq000 aiqqq000 于 2016.03.10 13:54 提问

java中格式化“1990-04-15 00:00:00”这个字符串为Date时出现问题
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 String str = "1990-04-15 00:00:00";
 System.out.println(sdf.format(sdf.parse(str)));

运行结果为:1990-04-15 01:00:00

这里为什么格式化后的日期多了一个小时?

补充啊,这里的时间改成任意的其他时间就正常

新人没有币,还请指导的解惑啊

8个回答

a8761087
a8761087   Rxr 2016.03.10 14:14

因为24时 日期格式是没有00点的。00点就认为是1点。晚上12点是24点。

liuyouli2012
liuyouli2012   2016.03.10 14:07

我也想知道!! 神奇

bdmh
bdmh   Ds   Rxr 2016.03.10 14:12

你看看本地时区是哪,设置成北京时区

PYouLing123456789
PYouLing123456789   2016.03.10 14:24

我运行了了
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String str = "1990-04-15 01:00:00";
System.out.println(sdf.format(sdf.parse(str)));
发现结果 1990-04-15 01:00:00

运行下面的之后
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = "1998-04-15 00:00:00";
System.out.println(sdf.format(sdf.parse(str)));
结果是这个:
1998-04-15 00:00:00
我也觉得很纳闷。我觉得有可能与时区有关系

PYouLing123456789
PYouLing123456789 回复随手一码: 其实这个可以代码里面手动处理,只有这个是有问题的。
接近 2 年之前 回复
aiqqq000
aiqqq000 你把那个字符串时间改成任意其他时间就是正常的,唯独这个时间有这个问题~
接近 2 年之前 回复
baidu_33430214
baidu_33430214   2016.03.10 15:36

神奇!我猜跟系统中英文语言可能有关,转换到特定点时会发生特殊变化。

u012401711
u012401711   2016.03.10 17:29

改成其他时间都行,唯独这个时间不行,我也很郁闷,等待大神解答

qq_29610345
qq_29610345   2016.11.02 14:25

改成其他时间都行,唯独这个时间不行,我也很郁闷,等待大神解答

qq_29610345
qq_29610345   2016.11.02 14:25

改成其他时间都行,唯独这个时间不行,我也很郁闷,等待大神解答

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!