Datetime 在国际化的背景下,“只是一个没有时间的约会”真的是一个有效的概念吗?

Datetime 在国际化的背景下,“只是一个没有时间的约会”真的是一个有效的概念吗?,datetime,internationalization,timezone,jodatime,nodatime,Datetime,Internationalization,Timezone,Jodatime,Nodatime,我在概念上总是遇到一些问题,比如日期值被表示为没有时间的对象。例如,SQL的类型是DATETIME旁边的date。同样的想法通常会在总是存储日期和时间的语言中产生问题,例如C的DateTime。突然,时区错误出现了,开发人员坚持所有时区的喧嚣都可以忽略,因为他们的日期时间实际上只是一个日期。但这到底意味着什么呢 在我看来,这样一个简单的日期只能用两种方式来解释: 从时间点(即瞬间)的角度,可以推断2019-09-17意味着一天的开始和结束,即2019-09-17 00:00:00 2019-09

我在概念上总是遇到一些问题,比如日期值被表示为没有时间的对象。例如,SQL的类型是DATETIME旁边的date。同样的想法通常会在总是存储日期和时间的语言中产生问题,例如C的DateTime。突然,时区错误出现了,开发人员坚持所有时区的喧嚣都可以忽略,因为他们的日期时间实际上只是一个日期。但这到底意味着什么呢

在我看来,这样一个简单的日期只能用两种方式来解释:

从时间点(即瞬间)的角度,可以推断2019-09-17意味着一天的开始和结束,即2019-09-17 00:00:00 2019-09-17 23:59:59。因此,时区信息是相关的,我们谈论的不仅仅是日期。 另一种选择是,日期应该是指一整天,因此我们实际上谈论的是从2019-09-17 00:00:00到2019-09-17 23:59:59的时间跨度,时区信息也不能被忽略。 我认为,所有纯日期的用例都属于这两类中的任何一类,只有当软件只在配置了完全相同时区的系统上运行并与之通信时,时间/时区才能被忽略


有人能提供一个反例或第三种解释吗?

假日是一个没有时间的日期,甚至没有时区的例子

大多数节日本质上都是宗教性的,我不想挑起宗教战争,也不想被琐事所左右。因此,作为一个假日的例子,我将选择地球日:每年的4月22日

如果你写的软件是关于假期的,他说,软件不一定要处理整个地球上的一个瞬间,尽管除了跟踪假期之外,它还可以做到这一点。取而代之的是,它将每年的4月22日映射为地球日。有些人会在其他人之前或之后几个小时庆祝地球日,这是无关紧要的

如果客户希望确切地知道地球日的开始/结束时间,那么他可以使用自己的特定时区将日期转换为特定的时间点。这种翻译的需要并不会降低日期(比如2020-04-22)的价值

C++20将有几种类型来表示无时区日期,例如2020-04-22,使用不同的数据结构:

local_days         // day 18374                   == April/22/2020
year_month_day     // year 2020, month 4, day 22  == April/22/2020
year_month_weekday // year 2020, month 4, 4th Wed == April/22/2020

假日就是一个没有时间,甚至没有时区的日期的例子

大多数节日本质上都是宗教性的,我不想挑起宗教战争,也不想被琐事所左右。因此,作为一个假日的例子,我将选择地球日:每年的4月22日

如果你写的软件是关于假期的,他说,软件不一定要处理整个地球上的一个瞬间,尽管除了跟踪假期之外,它还可以做到这一点。取而代之的是,它将每年的4月22日映射为地球日。有些人会在其他人之前或之后几个小时庆祝地球日,这是无关紧要的

如果客户希望确切地知道地球日的开始/结束时间,那么他可以使用自己的特定时区将日期转换为特定的时间点。这种翻译的需要并不会降低日期(比如2020-04-22)的价值

C++20将有几种类型来表示无时区日期,例如2020-04-22,使用不同的数据结构:

local_days         // day 18374                   == April/22/2020
year_month_day     // year 2020, month 4, day 22  == April/22/2020
year_month_weekday // year 2020, month 4, 4th Wed == April/22/2020

有一段很长的时间间隔,在这段时间内,地球的某些部分将当前时间视为给定日期的一部分——总共约49小时。从2020—01-01开始,例如2020-01-01T0:00 :00 +13:00,当它在2020—01-01T23∶59:59-12:00停止时,有一段很长的时间间隔,在这段时间内,地球的某些部分将当前时间视为给定日期的一部分-总共约49小时,例如,从2020-01-01从2020-01-01T00:00:00+13:00开始到2020-01-01T23:59:59-12:00结束。虽然我是火星人,感觉有点不舒服,但这仍然是一个很好的例子。谢谢你的解释。我现在明白了无时区日期的必要性。然而,你认为这是一种特殊情况,在许多情况下,日期的时间成分不应该被忽略,这样的说法是正确的吗?霍华德,很好的例子另一个:一个人的生日。生日=度假我认为不值得深入讨论生日折扣问题的细节。在这种情况下,很容易想到既涉及时区又不涉及时区的规则。如果您正在寻找更多的例子,其中无区域日期将是有用的,我可以提供更多。日历之间的转换。抵押计算。根据名人哺乳动物的妊娠期预测未来的日期。监狱释放日期。酒店预订。计算营业日。狩猎季节是什么时候。互动历史展览。有历史意义的
气候平均值。图书出版日期。嗯,我想事情的真相是,对于日期、时间和时区,没有真正的概括。它始终取决于特定的用例。多么可怕的软件开发问题^ ^无论如何,谢谢你的耐心!虽然我是火星人,有点被冒犯,但这仍然是一个很好的例子。谢谢你的解释。我现在明白了无时区日期的必要性。然而,你认为这是一种特殊情况,在许多情况下,日期的时间成分不应该被忽略,这样的说法是正确的吗?霍华德,很好的例子另一个:一个人的生日。生日=度假我认为不值得深入讨论生日折扣问题的细节。在这种情况下,很容易想到既涉及时区又不涉及时区的规则。如果您正在寻找更多的例子,其中无区域日期将是有用的,我可以提供更多。日历之间的转换。抵押计算。根据名人哺乳动物的妊娠期预测未来的日期。监狱释放日期。酒店预订。计算营业日。狩猎季节是什么时候。互动历史展览。历史气候平均值。图书出版日期。嗯,我想事情的真相是,对于日期、时间和时区,没有真正的概括。它始终取决于特定的用例。多么可怕的软件开发问题^ ^无论如何,谢谢你的耐心!