大佬教程收集整理的这篇文章主要介绍了工作时间内的时间 - 在 Kotlin 中检查一个班轮,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当列表项业务工作时,我需要在 recyclerVIEw 中显示一个红点,而当它不工作时显示红色。
我使用数据绑定 API 24,能够使用 Java 8 调用(尤其是 API 26 新 java.Time 及其 LocalTime
和 LocalDate
)。>
//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.util
日期时间 API 及其格式化 API SimpleDateFormat
已过时且@R_74_10197@。建议完全停止使用它们并切换到 modern Date-Time API*。
使用 java.time
(现代日期时间 API)的解决方案:
您可以使用函数 LocalTime#isAfter
和 LocalTime#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,请注明来意。