Wol*_*fer 21 time unix-timestamp
在我看来,我不知道在1970年之前存储日期的机制.1作为Unix时间戳.由于那个日期是Unix"时代",这并不奇怪.
但是 - 即使它不是为此而设计的 - 我仍然希望以Unix格式存储过去的日期.
我需要这个是有原因的.
所以我的问题是:如何让unix-timestamps包含"无效"但仍然有工作日期?存储负数秒会有效吗?我们甚至可以在unix时间戳中存储负数秒吗?我的意思是不是没有签名?
此外,如果我是正确的那么我只能存储日期,因为它1901. dec. 13 20:45:52可以在任何方式进一步延伸回历史?
Bas*_*que 34
UNIX时间是通常从1970年在UTC的第一刻的全部秒的32位数字,该时期是1 January 1970 00:00:00 UTC.这意味着大约136年的范围,在这个时代的任何一边约有一半.负数较早,零是时期,正数是较晚的.对于带符号的32位整数,值的范围1901-12-13为2038-01-19 03:14:07 UTC.
这不是一成不变的.嗯,这是写的,但在一堆不同的石头.较老的人说32位,较新的64位.一些规格是意思是"实现定义".一些Unix系统使用unsigned int仅延伸到将来的时间段,但通常的做法是签名号码.有些使用浮点而不是整数.有关详细信息,请参阅有关Unix时间的维基百科文章和本期课题.
所以,基本上,你的问题毫无意义.您必须了解编程语言(标准C,其他C,Java等),环境(POSIX兼容),特定软件库或数据库存储或应用程序的上下文.
除了这种缺乏特异性之外,各种软件系统已经使用了几十个其他时代,其中一些非常受欢迎且常见.示例包括1601年1月1日用于NTFS文件系统和COBOL,1980年1月1日用于各种FAT文件系统,2001年1月1日用于Apple Cocoa,以及1900年1月0日用于Excel和Lotus 1-2-3电子表格.
进一步补充了使用不同粒度计数的事实.除了整秒,一些系统使用毫秒,微秒或纳秒.
我建议不要将日期时间作为从纪元开始计算.而是使用编程语言或数据库中可用的特定数据类型.
当数据类型不可用或交换数据时,请遵循ISO 8601标准,该标准为各种日期时间值定义合理的字符串格式.
2015-07-292015-07-29T14:59:08Z2001-02-13T12:34:56.123+05:302015-W312015-W31-32015-210"2007-03-01T13:00:00Z/2008-05-11T15:30:00Z"PnYnMnDTnHnMnS)
P3Y6M4DT12H30M5S ="三年,六个月,四天,十二小时,三十五分五秒"搜索StackOverflow.com以获取有关这些主题的更多问题和解答.