你今天因为 YYYY-MM-dd 被提 BUG 了吗

2019-12-30 17:39:49 +08:00
 zhuzhiqiang

同事之前的代码使用 YYYY-MM-dd 今天被捶了 [捂脸]

33072 次点击
所在节点    程序员
114 条回复
b821025551b
2019-12-31 09:51:44 +08:00
@xwbz2018 #47 u 和 y 的区别主要是公元前的年份,用 y 是正数,需要加个 G 来区分是 AD 还是 BC ;用 u 直接负数代表公元前,但公元前部分+1 才和我们常规记年相等。
WEBUG
2019-12-31 09:57:33 +08:00
弱弱问一句 sql 里没有这个问题吧
ladypxy
2019-12-31 09:59:20 +08:00
腾讯都挂了好么
QQ 嗯生日提醒,明明是 2020 年 1 月,然后非提说日子已经过了
demo
2019-12-31 10:05:18 +08:00
date-fns^2.8.1 的 YYYY 未发现这个问题
encro
2019-12-31 10:05:18 +08:00
https://www.php.net/manual/en/function.date.php

```
Things to be aware of when using week numbers with years.

<?php
echo date("YW", strtotime("2011-01-07")); // gives 201101
echo date("YW", strtotime("2011-12-31")); // gives 201152
echo date("YW", strtotime("2011-01-01")); // gives 201152 too
?>

BUT

<?php
echo date("oW", strtotime("2011-01-07")); // gives 201101
echo date("oW", strtotime("2011-12-31")); // gives 201152
echo date("oW", strtotime("2011-01-01")); // gives 201052 (Year is different than previous example)
?>

Reason:
Y is year from the date
o is ISO-8601 year number
W is ISO-8601 week number of year

Conclusion:
if using 'W' for the week number use 'o' for the year.
```
EricFuture
2019-12-31 10:10:31 +08:00
一直用的 yyyy,没想到还有这个 bug,get 了,那么问题来了 YYYY 存在的意义是什么呢?
JamesR
2019-12-31 10:10:53 +08:00
关键是有 Bug 价羊毛可薅吗?
zsdroid
2019-12-31 10:11:56 +08:00
YYYY 是表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。
yujieyu7
2019-12-31 10:12:22 +08:00
phper 表示 'Y-m-d' 运行良好
Martin9
2019-12-31 10:12:52 +08:00
cao,这周末也踩了这个坑。
zsdroid
2019-12-31 10:24:17 +08:00
我查了下,YYYY 的意义:“YYYY 表示的是以周为基础的年度,会计人员依靠这一点来避免在两个不同的年份之间拆分周数,从而避免公司的工资单。”
daquandiao2
2019-12-31 10:26:03 +08:00
js 呢
est
2019-12-31 10:29:23 +08:00
看了下这个 week-based year 是 ISO 8601 规定的。
netChen
2019-12-31 10:34:21 +08:00
@ccming 墙都不服,就服您贴出来的这个 BUG
burnbrid
2019-12-31 10:38:28 +08:00
这个 BUG 怎么重现?我 jdk6 用 SimpleDateFormat 没问题啊?怎么重现谁教教我?
wc951
2019-12-31 10:41:06 +08:00
oracle 都是大写不存在这个问题
xu123456
2019-12-31 10:43:58 +08:00
yyyy-mm-dd HH:mm:ss
fengdechoulian
2019-12-31 11:16:12 +08:00
你别说我遇到一个更奇葩的问题,ios 不支持 new Date('2019-08-02 18:00:00')这样格式的日期转换,后来改成 new Date('2019/08/02 18:00:00')了,真坑。
kelololy
2019-12-31 11:22:26 +08:00
丢人了,之前真的没注意这个
burnbrid
2019-12-31 11:23:06 +08:00
知道了,这是 JAVA8 日期格式化 SimpleDateFormat 的一个小坑,不算 BUG。jdk6 不支持大写的 Y。
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");

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

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

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

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

© 2021 V2EX