《油盐不进》

2023-01-08 23:48:43 +08:00
 Aloento

和哥们聊着聊着聊的我血压起来了

7197 次点击
所在节点    程序员
45 条回复
xuanbg
2023-01-08 23:55:20 +08:00
有一说一,Java 的 DateTime 类型是真的垃圾。。。C#的 DateTime 也还行吧,没啥大毛病,用起来确实也挺方便的。
Aloento
2023-01-09 00:05:21 +08:00
@xuanbg 其实如果单纯论 datetime 什么的都无所谓,最头疼的是《新的》,我不知道这新在哪里,而且按微软的说法
> DateTimeOffset 值的使用频率比 DateTime 值的更高。
ragnaroks
2023-01-09 00:27:43 +08:00
只看你这个图,如果这是他的真心想法,那么属于既不懂 java 又不懂 dotnet ,是我就直接屏蔽了。
ysc3839
2023-01-09 03:02:28 +08:00
DateTime 比 DateTimeOffset 大?微软文档里说 The DateTimeOffset structure includes a DateTime value, together with an Offset property
https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset
如果是我我也不会选择使用 DateTimeOffset ,具体时区使用系统时区或者提供设置选项让用户改时区。个人认为在时间值中存时区反而会导致混乱。以及可能泄漏个人隐私,比如 Git 的 commit date 就包含时区,可以以此推测用户地区。
dcoder
2023-01-09 03:25:31 +08:00
时区真的烦.
最好是所有时间都用 epoch.只有表示给 user 看时, 才使用 user 的本地时区转换下.
lslqtz
2023-01-09 03:35:27 +08:00
没必要存时区, 使用时再转换.
netabare
2023-01-09 06:11:38 +08:00
个人的看法,对时区之类的细节,在 prototyping 的时候不会去特地考虑,毕竟首要任务是弄个 demo 出来。

但是到了 production 的阶段,这些细节都是需要解决的吧。除非在写的是应付学校的作业。

把.Net Framework 时代的东西称为「新的第三方不稳定 API 」也实在太典了。
Aloento
2023-01-09 06:29:48 +08:00
@ysc3839 DateTime 的 UTC 首选对吗(
为什么微软说 DateTimeOffset 使用的频率更高呢
说到时区,DateTime 里面也有保存时区的成员
以后可以仔细分析一下具体区别,比如大小和效率
mingl0280
2023-01-09 07:49:10 +08:00
如果对方的程序只运行在当地时区下,而且与当地时区相关,那么使用 DateTime 是非常好的选择。
如果对方的程序需要经常处理与 UTC 相关的转换(如地方时区转成 UTC ),那么用 offset 意味着你得手动处理这个转换,而且肯定没微软搞的那个稳,此时也应该用 DateTime.
如果你的程序内需要一个时间戳,但与本地时区无关,则使用 DateTimeOffset.
微软的文档有时候写得不是那么容易理解的。
mingl0280
2023-01-09 07:54:02 +08:00
而且微软那个 note ,我这么说吧,纯粹是为了掩盖掉他们整错了这俩玩意儿的名称的做法……DateTimeOffset 很容易被理解为与 x 时间做的一个差值,还不如叫 AbsoluteTimestamp 呢……
所以凡是要以当地时区计时的东西(尤其是某些 log 必须跟着计算机时间走的),一定用 DateTime 。
securityCoding
2023-01-09 08:39:09 +08:00
一律用 timestamp
YVAN7123
2023-01-09 08:49:43 +08:00
utc 好复杂 timestamp +1
@securityCoding
yaott2020
2023-01-09 09:02:14 +08:00
timestamp +1 不需要考虑什么时区问题
cubecube
2023-01-09 09:42:03 +08:00
@xuanbg LocalDateTime 用起来爽翻天呀
Mithril
2023-01-09 10:02:28 +08:00
看看这里的回帖就知道什么叫油盐不进了。。。

我不懂,我不学,我就用这个
NizumaEiji
2023-01-09 10:04:11 +08:00
存 utc 既简单又方便 需要的时候再根据时区转就好
如果非要存的话也不太建议存单纯的 offset 而是建议存类似 TimezoneInfo 之类的东西(不过感觉.net 应该是考虑过这个东西的 俺写 java 的对这玩意儿不太了解😄)
之前做海外业务的时候曾经就被冬夏令时转换这玩意儿支配过
FreshUncle
2023-01-09 10:10:57 +08:00
不在一个逻辑里多说无益
zydxn
2023-01-09 10:16:50 +08:00
Java 不用 LocalDate 、LocalDateTime 吗?
bthulu
2023-01-09 10:28:41 +08:00
看了你截图里的 https://learn.microsoft.com/en-us/dotnet/standard/datetime/choosing-between-datetime
微软也是推荐用的 DateTime, 只有当你确实需要处理时区问题的时候才推荐 DateTimeOffset, 你同学 /朋友 /同事说的没错.
The DateTime structure is suitable for applications with one or more of the following characteristics:
Work with dates and times for which time zone information is missing.
Work with UTC dates and times only.

The DateTimeOffset type includes all of the functionality of the DateTime type along with time zone awareness. This makes it suitable for applications that:
Uniquely and unambiguously identify a single point in time.
微软这里说的就是, 不关心时区你就用 DateTime, DateTime 里有个 Kind 属性指明是针对当前时区,UTC 时区,还是没有时区.
而 DateTimeOffset 则含有明确的时区定义.
就国内全国统一一个时区而言, 用 DateTime 有什么问题?
Huelse
2023-01-09 10:32:39 +08:00
“能用旧的绝不用新的”这句话才是血压来源吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/907460

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX