V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jiangnan01
V2EX  ›  Java

前端使用 element 的周选择器,是基于 momentJS 的,但是时间与 Java 计算的却不一样

  •  
  •   jiangnan01 · 2020-09-18 10:20:13 +08:00 · 2445 次点击
    这是一个创建于 1528 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT,现在的需求是要做一个报表提醒功能,用户设置一个报表有效期限例如 2020 年第 1 周到 2021 年第 52 周,并且每周三提醒当前周的报表。但是 java 在执行的时候需要知道当天属于当年的第几周,使用 Calendar 类转换的时候与前端周选择器控件输出的不一一致,尤其是跨年的时候,前端计算出来的可能是当年有 53 周,java 计算可能只有 52 周。所以想知道大家是怎么解决这类周期转换问题的

    10 条回复    2020-09-18 13:34:52 +08:00
    ITsWHY
        1
    ITsWHY  
       2020-09-18 10:34:05 +08:00
    日期格式的问题我们是前端做的
    easonHHH
        2
    easonHHH  
       2020-09-18 10:38:03 +08:00
    一般的 API 都支持配置从索引 0 开始或者从 1 开始(没有自己封装一层也行),又或者是周一 /周日作为周开始的吧,如果这些配置都统一的情况下,计算出来就是一样
    Torpedo
        3
    Torpedo  
       2020-09-18 10:44:44 +08:00
    我记得是部分浏览器上,java 的 utc 时间解析和 js 不一样。
    用 unix 时间戳就没事
    jiangnan01
        4
    jiangnan01  
    OP
       2020-09-18 10:45:05 +08:00
    @ITsWHY 在报表配置的时候遇到这个问题,我们也是这样做的,我前端给 java 把日期区间额外转换一份对应的第 N 周-第 n 周的数据,现在因为这个报表提醒是 java 后台自己跑的定时任务,需要 java 获取当前的时间然转换成当前属于第几周,这个时候跟前端转换的可能不一样
    jiangnan01
        5
    jiangnan01  
    OP
       2020-09-18 10:46:00 +08:00
    @Torpedo 是在 chrome 运行的
    jiangnan01
        6
    jiangnan01  
    OP
       2020-09-18 10:48:02 +08:00
    @easonHHH 请问 JAVA 是怎么设置这个周几作为一周开始的呢?我只知道前端可以使用 momentJS 设置语言然后设置周几作为一周开始,甚至一年的第一周以几月几日开始
    easonHHH
        7
    easonHHH  
       2020-09-18 10:55:21 +08:00
    @jiangnan01 #6 Java 不熟,但是看了一眼 API 文档里面应该是有的
    https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html
    setFirstDayOfWeek(int value)
    Sets what the first day of the week is; e.g., SUNDAY in the U.S., MONDAY in France.
    jiangnan01
        8
    jiangnan01  
    OP
       2020-09-18 11:36:17 +08:00
    @easonHHH 谢谢,找到了,再加上 setMinimalDaysInFirstWeek 这个方法可以和前端对应上了
    Justin13
        9
    Justin13  
       2020-09-18 12:42:00 +08:00 via Android
    isoweek 和 us week 的区别,方法就是前后端用同一套规则
    renmu123
        10
    renmu123  
       2020-09-18 13:34:52 +08:00
    都用符合 iso 规范的库吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2678 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:28 · PVG 11:28 · LAX 19:28 · JFK 22:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.