OpenHarmony ArkTS 是否有类似于java的Time类,可以通过Time.before及after方法判断两个时间的先后

luke 显示全部楼层 发表于 2023-12-5 13:48:03

类似于下面的代码

public static boolean isCurrentInTimeScope(String newBeginTime, String newEndTime) {
        boolean result = false;
        try{
            int beginHour = 00;
            int beginMin = 00;
            int beginSecond = 00;
            int endHour = 00;
            int endMin = 00;
            int endSecond = 00;
            beginHour = Integer.valueOf(newBeginTime.split(":")[0]);
            beginMin = Integer.valueOf(newBeginTime.split(":")[1]);
            beginSecond = Integer.valueOf(newBeginTime.split(":")[2]);
            endHour = Integer.valueOf(newEndTime.split(":")[0]);
            endMin = Integer.valueOf(newEndTime.split(":")[1]);
            endSecond = Integer.valueOf(newEndTime.split(":")[2]);

            final long aDayInMillis = 1000 * 60 * 60 * 24;
            final long currentTimeMillis = System.currentTimeMillis();

            Time now = new Time();
            now.set(currentTimeMillis);
            Time startTime = new Time();
            startTime.set(currentTimeMillis);
            startTime.hour = beginHour;
            startTime.minute = beginMin;
            startTime.second = beginSecond;
            Time endTime = new Time();
            endTime.set(currentTimeMillis);
            endTime.hour = endHour;
            endTime.minute = endMin;
            endTime.second = endSecond;
            if (!startTime.before(endTime)) {
                // 跨天的特殊情况(比如22:00-8:00)
                startTime.set(startTime.toMillis(true) - aDayInMillis);
                result = !now.before(startTime) && !now.after(endTime); // startTime <= now <= endTime
                Time startTimeInThisDay = new Time();
                startTimeInThisDay.set(startTime.toMillis(true) + aDayInMillis);
                if (!now.before(startTimeInThisDay)) {
                    result = true;
                }
            } else {
                // 普通情况(比如 8:00 - 14:00)
                result = !now.before(startTime) && !now.after(endTime); // startTime <= now <= endTime
            }
            return result;
        }catch (Exception e){
            e.printStackTrace();
        }

//        Log.e("---",">>>"+result);
        return result;
    }

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论4

马迪

沙发 发表于 2023-12-5 15:13:37

  1. <div>const date1 = new Date('2023-03-17');  
  2. const date2 = new Date('2023-03-18');  
  3.   
  4. if (date1 > date2) {  
  5.   console.log('date1 is later than date2');  
  6. } else if (date1 < date2) {  
  7.   console.log('date1 is earlier than date2');  
  8. } else {  
  9.   console.log('date1 is the same as date2');  
  10. }</div>
复制代码

hyacinth养花人

板凳 发表于 2023-12-6 10:42:25

OpenHarmony ArkTS 是否有类似于java的Time类,可以通过Time.before及after方法判断两个时间的先后

三方库dayjs
fakename.png

Bragg

发表于 2024-5-10 10:18  IP属地: - 中国江苏省扬州市 中国电信IDC

回复 hyacinth养花人: 这个库做的不是标准的格式化,没法使用,dd居然不是表示day, 而是表示星期?,不支持yyyy只支持YYYY

hyacinth养花人

发表于 2024-5-11 09:00  IP属地: 广东省广州市

回复 Bragg: 这样啊,可以提个ISSURE

【2 条回复】
共4 条回复,点击查看

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部