时间点通常表示为Unix Time,或表示为人类可读的ISO 8601 date in UTC时间字符串。
例如:
自Epoch以来的秒数,或Unix时间戳,以秒或毫秒为单位:
1529325705
1529325705000
2018-06-18T15:41:45 + 00:00
两者之间是否存在一对一的关系?换句话说,是否存在一种格式的单一表示形式的时间点,另一种格式中的表示形式不止一个或零个?
答案 0 :(得分:1)
是的,可以找到这样的日期。来自Unix时间的wiki文章:
每天被视为恰好包含86400秒,[2]所以闰秒不会应用于纪元以来的秒数。
这意味着闰秒本身不能在Unix时间表示。
例如,最新的闰秒发生在2016年底,因此2016-12-31T23:59:60+00:00
是有效的ISO 8601时间戳。但是,在23:59:59之前的第二个Unix时间戳表示为1483228799,而在00:00:00(2017年1月1日)之后的第二个时间戳表示为1483228800,因此没有代表该时间戳的Unix时间戳。闰秒。
在实践中,这对您来说可能不是问题;自1972年推出以来,只有27秒的闰秒。
值得一提的是,ISO 8601的大多数软件实现也没有考虑闰秒,但如果要求解析"2016-12-31T23:59:60+00:00"
,则会做其他事情。 .NET中的System.DateTime
类会引发异常,同时也可以想象库将返回2017-01-01 00:00:00。
答案 1 :(得分:0)
换句话说,是否存在一种格式中的单一表示形式,另一种格式中的多于一种或零种表示形式的时间点?
没有。 UTC时间取决于您的地理位置,即。你的经纬度。但是,UNIX时间戳是一种将时间跟踪为总运行秒数的方法。此计数始于1970年1月1日UTC时的Unix Epoch。 来自Unix TimeStamp,
还应该指出,这个时间点在技术上并没有改变否 无论你身在何处。
答案 2 :(得分:0)
没有。两者之间有很好的对应关系,但关系是1到多,严格来说,对于给定的ISO日期时间字符串,甚至可能不存在精确的Unix毫秒。一些问题是:
Z
,但也可以像问题+00:00
一样写入。我认为表单+00
和+0000
也可以(带有减号的表单不是)。