偷懒用日期拼接年份的,今天都开始报错了

70 天前
 exploretheworld
什么 2023-02-29 ,笑了
13650 次点击
所在节点    程序员
50 条回复
celisee
70 天前
昨天就接到通知,统一排查了一遍

这种拼接年份的???
cc666
70 天前
可能是说表单的时间起始和结束范围?选择一年前的数据是 2023-02-29 到 2024-02-29 ,2023-02-29 是个拼接错误?
exploretheworld
70 天前
@celisee 算一年前只减年份
learnshare
70 天前
new Date('2023-02-29') => '2023/3/1 08:00:00'
自动纠错或者报异常,都是尴尬的
Hopetree
70 天前
这是 Python 的,不会报错,一年前是 2023-02-28

```python
from datetime import datetime
from dateutil.relativedelta import relativedelta
current_date = datetime.now()
current_date - relativedelta(years=1)
datetime.datetime(2023, 2, 28, 9, 57, 56, 185222)
```
binaryify
70 天前

用库的好处
chobitssp
70 天前
用 moment 不才算偷懒吗

var date = '2024-02-29';
moment(date).add(-1, 'years').format('YYYY-MM-DD');
date.replace(/^\d{4}/, t => parseInt(t, 10) - 1);
date.split('-').map((t, i) => i > 0 ? t : parseInt(t, 10) - 1).join('-');
hi2hi
70 天前
我自己撸了一个按自然月变更时间的方法,然后每次都是直接增减月数
sayitagain
70 天前
😁问题不大,一个懒可以撑四年,
NessajCN
70 天前
只有不懂啥叫 unix timestamp 的培训班前端才会觉得那样是偷懒
banmuyutian
70 天前
说明大部分产品都撑不过 4 个年头
AllenCai
70 天前
if (date.includes('-29')) {
date= date.replace('-29', '-28')
}
修复一下,突出一个死性不改
AllenCai
70 天前
@AllenCai
if (date.includes('02-29')) {
date= date.replace('02-29', '02-28')
}
加上月份,这就完美了
treblex
70 天前
前几天改了个,自定义写的日期选择器,那哥们儿直接每个月 31 天😂,然后也不写组件,每个页面拷贝一份,找的头都大了
pkoukk
70 天前
有库还徒手拼?不知道该说懒还是勤快...
lichao
70 天前
3.1.2 :001 > Time.current.to_date - 1.year
=> Tue, 28 Feb 2023
74123gzy
70 天前
还好我们全是组件跟库
yinmin
70 天前
算法供参考:

日期型变量 d ,获取日期 d 对应月份的最后一天

date(d.year,d.month,1).addmonth(1).addday(-1)
lhstock
70 天前
没做过相关业务,我怎么感觉这不是单纯的技术问题;应该还要考虑产品或行业规范来实现吧,比如会员一年,按 366 还是 365 算呢;
具体点就是 24.02.29 开通的,应该什么时候过期;客户对于这个时间会不会有争议呢;
同样的问题还有一个月。2.1 开通一个月,那应该什么时候到期呢
确实没写过相关的业务,纯好奇不是杠
SimonOne
70 天前
@yinmin #18 我写 abap 也这么整的。

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

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

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

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

© 2021 V2EX