java 从一个LocalDateTime引发的疑问
一
公司有同事部署出错,然后查日志,找时间,从k8s得到的时间是 2017-06-16T09:38:48.580 +0000,然后他就纳闷了,因为他根本不会在9点部署好吧,而且9点大多数程序员都没开始进入状态呢。所以,咱们一群弱鸡就一起找原因了。
二
说真的一群程序员,靠猜都能猜得出大概意思是什么,但是,我们总要知道个为什么把?
+0000 我一开始就猜这是个时区之类的玩意,结果这是UTC时间格式(世界协调时)区分时区的。
+0000 代表着时区,而我们所在的时区是+0800,东8区。
三
2017-06-16T09:38:48.580的T,大家都猜得出这是LocalDateTime,所以很多同事一开始是从LocalDateTime查,查那个T是不是区分时区的,直到我查到UTC这玩意。
但是,大家还是查T代表着什么,最后才发现这只是个ISO 8601标准。。。
然后,大家钻牛角尖,这标准有什么好?
经讨论有区分,加快检索,去空格方便操作之类的。
我也不知道哪个对,百科没说,我觉得这问题和盘古开天地,自古以来就是如此是一个类型的,你们知道正确答案麻烦告知一下我这个弱鸡。。。
四
最后放一个JavaLocalDateTime的方法,看了之后大家不会用什么replace了吧?
@Override public String toString() { return date.toString() + 'T' + time.toString(); }