程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了工作时间内的时间 - 在 Kotlin 中检查一个班轮大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决工作时间内的时间 - 在 Kotlin 中检查一个班轮?

开发过程中遇到工作时间内的时间 - 在 Kotlin 中检查一个班轮的问题如何解决?下面主要结合日常开发的经验,给出你关于工作时间内的时间 - 在 Kotlin 中检查一个班轮的解决方法建议,希望对你解决工作时间内的时间 - 在 Kotlin 中检查一个班轮有所启发或帮助;

当列表项业务工作时,我需要在 recyclerVIEw 中显示一个红点,而当它不工作时显示红色。

我使用数据绑定 API 24,能够使用 Java 8 调用(尤其是 API 26 新 java.Time 及其 LocalTimeLocalDate)。>

//Get local date way 1
var day: String = LocalDate.Now().dayOfWeek.name
var time: String = LocalTime.Now().toString()//.hour.toString()
//Get local date way 2
val calendar = Calendar.geTinstance()
val dateInfo = DateFormat.getDateInstance(DateFormat.FulL).format(calendar.timE)
//Get local date way 3
var date = Date()

我从服务器收到以下格式的工作时间:

"schedule_1": "09:00 22:00","schedule_2": "09:00 22:00","schedule_3": "09:00 22:00","schedule_4": "09:00 22:00","schedule_5": "09:00 22:00","schedule_6": "09:00 17:00","schedule_7": "",

每个时间表都是一周中的某一天,所以我需要检查它是否是今天。

Stack Overflow 上的大多数问题比较两个时间戳或两个日期,它们都是一页纸,但我希望在工作时间内有时间一行。

解决方法

java.time

java.util 日期时间 API 及其格式化 API SimpleDateFormat 已过时且@R_74_10197@。建议完全停止使用它们并切换到 modern Date-Time API*

使用 java.time(现代日期时间 API)的解决方案:

您可以使用函数 LocalTime#isAfterLocalTime#isBefore 将当前时间与营业时间的开始和结束进行比较。

演示:

import java.time.LocaldatetiR_738_11845@e;
import java.time.LocalTime;
import java.time.ZonEID;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        //Test      
        System.out.println(isBusinessHour());
    }
    static Boolean isBusinessHour() {
        Boolean businessHour = false;
        
        Map<String,String> map = Map.of(
                "schedule_1","09:00 22:00","schedule_2","schedule_3","schedule_4","schedule_5","schedule_6","09:00 17:00","schedule_7",""
        );
        
        LocaldatetiR_738_11845@e ldt = LocaldatetiR_738_11845@e.now(ZonEID.of("Europe/Moscow"));
        String key = "schedule_" + ldt.getDayOfWeek().getValue();
        String[] businessHours = map.get(key).split(" ");
        if(businessHours.length == 2) {
            LocalTime start = LocalTime.parse(businessHours[0]);
            LocalTime end = LocalTime.parse(businessHours[1]);
            LocalTime now = ldt.toLocalTime();
            businessHour = !now.isBefore(start) && !now.isAfter(end);
        }
        
        return businessHour;
    }
}

样本运行的输出:

false

ONLINE DEMO

Trail: Date Time 了解有关现代 Date-Time API 的更多信息。


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-BACkport它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。

,

工作时间在绿色和红色之间切换的图标颜色色调实现。

 @BindingAdapter("app:workingHoursColoredDot")
    fun workingHoursColoredDot(view: ImageView,terminalItem:NetworkTerminal){
        terminalItem?.let {
            var day = LocalDate.now().dayOfWeek.value//.ordinal
            var time = LocalTime.now()
            val networkDate = when (day) {
                1 -> terminalItem.schedule_1
                2 -> terminalItem.schedule_2
                3 -> terminalItem.schedule_3
                4 -> terminalItem.schedule_4
                5 -> terminalItem.schedule_5
                6 -> terminalItem.schedule_6
                7 -> terminalItem.schedule_7
                else -> throw IllegalArgumentexception()
            }
            Log.d("BindingAdapters","val networkDate = terminalItem.schedule_1 $networkDate")
            if (!networkDate.isNullOrEmpty()) {
                val (starttimestring,endtimestring) = networkDate.split(" ")
                Log.d("BindingAdapters","val (startTime,endTimE) = $starttimestring $endtimestring")
                val startTime: LocalTime = LocalTime.parse(starttimestring,datetiR_738_11845@eFormatter.ofPattern("H:mm"))
                val endTime: LocalTime= LocalTime.parse(endtimestring,datetiR_738_11845@eFormatter.ofPattern("H:mm"))
                var businessWorking = time.isAfter(startTimE) and time.isBefore(endTimE)
                if (businessWorking)view.BACkgroundTintList = ContextCompat.getColorStateList(view.context,R.color.green_dot) else view.BACkgroundTintList = ContextCompat.getColorStateList(view.context,R.color.red)
            }
        }
    }

大佬总结

以上是大佬教程为你收集整理的工作时间内的时间 - 在 Kotlin 中检查一个班轮全部内容,希望文章能够帮你解决工作时间内的时间 - 在 Kotlin 中检查一个班轮所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。