我有一个带有折扣/交易的应用程序,用于需要在特定日期时间(即从1st January 2022 7:00 am到31st January 2022 5:00 pm )之间启用的项。
设置这些开始和结束日期的用户可以基于世界上任何地方,但是终端用户需要观察这些相对于其本地时间的开始和结束日期。
例如,该交易的用户是在马来西亚GMT+8为他们在印尼各地的终端消费者(这里有三个独立的时区GMT+7、GMT+8和GMT+9)以及新西兰的一些其他终端消费者(那里有夏令储蓄和GMT+12和GMT+13交替使用)。
因此,GMT+13的消费者必须观察1st Jan 7am中的交易,而GMT+7的另一个消费者则会在几个小时后观察它,但在当地时间仍然是1st Jan 7am。
他们在手机上的一个应用程序上观察这些交易,在商店里他们声称这些交易。因此,即使消费者可以改变手机的时区,以确保交易更快--他们必须去商店认领他们,并且只能在商店的时区到达可用的时间时才能这样做。
我目前的想法是在没有任何时区的情况下将这些存储到使用具有DateTime类型的Unspecified类型的DateTime中,并且该DateTime的任何使用都将相对于设备上配置的使用者/存储本地时间。我看不出有什么办法把这个日期保存为UTC
有没有其他办法?是否通过使用新的DateOnly和TimeOnly结构来更好地支持这个用例?
发布于 2022-07-11 02:11:05
,我目前的想法是,在没有任何时区的情况下将这些存储到使用具有
Unspecified类型的DateTime类型中,并且该DateTime的任何使用都将相对于设备上配置的使用者/存储本地时间。
是的,这将适合您描述的场景。
这有时被称为“浮动时间”。您可能还会看到它被描述为“电视时间”,因为这种场景在广播电视节目播出的时间方面是很常见的。
请记住以下几点:
TimeZoneInfo.Local或DateTimeKind.Local。在JavaScript中,您可以使用Date对象等。
DateTimeOffset,然后将其与其他值进行比较。例如:TimeZoneInfo z= TimeZoneInfo.FindBySystemTimeZoneId(userTZ);TimeSpan偏移量= tz.GetUtcOffset(dt);DateTimeOffset dto =新DateTimeOffset(dt,偏移量);if (dto >= DateTimeOffset.UtcNow) .
https://stackoverflow.com/questions/72932507
复制相似问题