• 请不要在回答技术问题时复制粘贴 AI 生成的内容
exploretheworld
V2EX  ›  程序员

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

  •  1
     
  •   exploretheworld · Feb 29, 2024 via Android · 19198 views
    This topic created in 980 days ago, the information mentioned may be changed or developed.
    什么 2023-02-29 ,笑了
    50 replies  •  2024-03-01 16:35:01 +08:00
    celisee
    celisee
    Feb 29, 2024
    1
    昨天就接到通知,统一排查了一遍

    这种拼接年份的???
    cc666
    cc666
    Feb 29, 2024❤️2
    2
    可能是说表单的时间起始和结束范围?选择一年前的数据是 2023-02-29 到 2024-02-29 ,2023-02-29 是个拼接错误?
    exploretheworld
    exploretheworld
    OP
    Feb 29, 2024 via Android
    3
    @celisee 算一年前只减年份
    learnshare
    learnshare
    Feb 29, 2024
    4
    new Date('2023-02-29') => '2023/3/1 08:00:00'
    自动纠错或者报异常,都是尴尬的
    Hopetree
    Hopetree
    Feb 29, 2024❤️1
    5
    这是 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
    binaryify
    Feb 29, 2024❤️4
    6

    用库的好处
    chobitssp
    chobitssp
    Feb 29, 2024
    7
    用 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
    hi2hi
    Feb 29, 2024
    8
    我自己撸了一个按自然月变更时间的方法,然后每次都是直接增减月数
    sayitagain
    sayitagain
    Feb 29, 2024❤️5
    9
    😁问题不大,一个懒可以撑四年,
    NessajCN
    NessajCN
    Feb 29, 2024❤️1
    10
    只有不懂啥叫 unix timestamp 的培训班前端才会觉得那样是偷懒
    banmuyutian
    banmuyutian
    Feb 29, 2024❤️2
    11
    说明大部分产品都撑不过 4 个年头
    AllenCai
    AllenCai
    Feb 29, 2024
    12
    if (date.includes('-29')) {
    date= date.replace('-29', '-28')
    }
    修复一下,突出一个死性不改
    AllenCai
    AllenCai
    Feb 29, 2024❤️2
    13
    @AllenCai
    if (date.includes('02-29')) {
    date= date.replace('02-29', '02-28')
    }
    加上月份,这就完美了
    treblex
    treblex
    Feb 29, 2024
    14
    前几天改了个,自定义写的日期选择器,那哥们儿直接每个月 31 天😂,然后也不写组件,每个页面拷贝一份,找的头都大了
    pkoukk
    pkoukk
    Feb 29, 2024
    15
    有库还徒手拼?不知道该说懒还是勤快...
    lichao
    lichao
    Feb 29, 2024
    16
    3.1.2 :001 > Time.current.to_date - 1.year
    => Tue, 28 Feb 2023
    74123gzy
    74123gzy
    Feb 29, 2024
    17
    还好我们全是组件跟库
    yinmin
    yinmin
    Feb 29, 2024 via iPhone
    18
    算法供参考:

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

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

    NessajCN
    NessajCN
    Feb 29, 2024
    21
    @lhstock 一年的时间按 365.2422 天,即 31556926 秒来算
    xR13zp0h67njQr2S
    xR13zp0h67njQr2S
    Feb 29, 2024
    22
    手拼不是更累
    imlinhanchao
    imlinhanchao
    Feb 29, 2024❤️1
    23
    明天就正常了
    rainABC
    rainABC
    Feb 29, 2024
    24
    时间问题是一个永恒的问题
    lhstock
    lhstock
    Feb 29, 2024
    25
    @NessajCN 我尝试换算 31556926 秒;计算未来几年的结果应该很难被用户接受吧;所以产品与用户对于年的定义是如何保持一致
    ```
    const timer = new Date().getTime();
    const test = (n = 0) => new Date(+timer + n * 31556926*1000).toLocaleDateString();
    console.log(test(0))
    console.log(test(1))
    console.log(test(2))
    console.log(test(3))
    console.log(test(4))
    // 输出如下:
    2024/2/29
    2025/2/28
    2026/3/1
    2027/3/1
    2028/2/29
    ```
    106npo
    106npo
    Feb 29, 2024❤️4
    26
    提工单,安排明天修.明天直接结单,完美.
    NessajCN
    NessajCN
    Feb 29, 2024
    27
    @lhstock 这结果哪里不对吗?
    lhstock
    lhstock
    Feb 29, 2024
    28
    @NessajCN 带入一个场景 我今天办了年会,明天是 28 到期,我再办又是 3.1 => 3.1 => 2.29 => 2.28 反复循环,
    kneo
    kneo
    Feb 29, 2024 via Android
    29
    这都能错,我是难以理解。
    youyouzi
    youyouzi
    Feb 29, 2024
    30
    @binaryify dayjs 好评
    NessajCN
    NessajCN
    Feb 29, 2024
    31
    @lhstock 所以可否再描述一下这到底哪儿不对了?
    你是觉得要每年都应该同一天办年会的话,那 29 号根本就不可能被设为年会日,相应的计算方法也不会按一年来加减
    NessajCN
    NessajCN
    Feb 29, 2024
    32
    @lhstock 更正一下,年会要同一天也同样是这样算最好,因为你不可能安排在 2 月 29 做固定年会日,而其他日期的话这样算是不会错的
    hubaq
    hubaq
    Feb 29, 2024❤️1
    33
    @lhstock
    爱奇艺:会员月卡服务时间以自然月为统计单位,即自服务开通日期,根据开通当月自然月天数做顺延
    腾讯:月服务期限:开通当日起 31 天
    laoona
    laoona
    Feb 29, 2024
    34
    @treblex 真牛逼 重构吧
    8355
    8355
    Feb 29, 2024
    35
    这种代码,说真的,自己懒的写写个注释都能自动生成了。。
    vituralfuture
    vituralfuture
    Feb 29, 2024 via Android
    36
    日期,时间这种有标准的东西最好不要自己造轮子或者自己手动完成某些功能,因为非常容易忽略一些细节,比如大部分人都不会考虑的夏令时,润秒,时区。类似的还有 cookie ,http 协议等各种网络协议,又琐碎又容易出错
    nzynzynzy
    nzynzynzy
    Feb 29, 2024
    37
    一个环境和一个环境格式都不一样,不知道拼接的意义是啥,new Date()也不费啥事
    zhushishi
    zhushishi
    Feb 29, 2024
    38
    总有 2b 喜欢这么写。。。
    jeansfish
    jeansfish
    Feb 29, 2024
    39
    GoPro 今天居然是 3 月 1 日。
    Yuhyeong
    Yuhyeong
    Feb 29, 2024
    40
    /t/1019435 是你吗兄弟
    rongsh
    rongsh
    Feb 29, 2024
    41
    之前设置 iphone 专注模式中的工作模式到下午 5 点关闭,然而今天没有关闭。想知道有其他人遇到吗,会不会也是因为闰日这个原因导致的 bug 。
    panbeta
    panbeta
    Feb 29, 2024
    42
    好低级的错误。。。每 4 年一个 29 日属于常识了,写日期类逻辑必须用 calendar 处理,字符串拼接的算你们🐂
    Pastsong
    Pastsong
    Feb 29, 2024
    43
    日期时间这种全是坑的东西还有人不用库的。。
    killuma
    killuma
    Feb 29, 2024
    44
    我的 Apple Music4 月 29 日过期,怎么今天就显示过期了??
    https://imgur.com/Q3nlkTT.jpg
    https://imgur.com/0rMCOeK.jpg
    itechify
    itechify
    Feb 29, 2024 via Android
    45
    @AllenCai 假如是今天呢?
    JensenQian
    JensenQian
    Feb 29, 2024 via Android
    46
    刚 b 站看到的
    注意看评论区
    [img][/img]
    [img][/img]
    DavidA
    DavidA
    Feb 29, 2024
    47
    我甚至没看懂什么问题,谁来告诉我,错误的代码是什么样的?
    Felldeadbird
    Felldeadbird
    Mar 1, 2024
    48
    一年前我都是用 365 天来算的。懒得算闰年。
    lyxxxh2
    lyxxxh2
    Mar 1, 2024
    49
    @DavidA
    我一开始: 难道出什么世界级 bug 了? 日历 30 号怎么不见了? 难道我日历也有 bug? (没想起是闰年)
    后面: ... 就是人乱写导致的。 但凡用官方的日期函数或在用库都不会出现 bug 。
    atpex
    atpex
    Mar 1, 2024
    50
    @lyxxxh2 不是闰年 2 月也不会有 30 号。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3806 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 149ms · UTC 05:28 · PVG 13:28 · LAX 21:28 · JFK 00:28
    ♥ Do have faith in what you're doing.