gpt4 book ai didi

java - 在 Android 中比较两次

转载 作者:行者123 更新时间:2023-12-01 22:32:18 25 4
gpt4 key购买 nike

我知道这是一个经常讨论的话题,但我认为我有一个非常具体的问题。

我将商店的开门和关门时间以及 GPS 坐标存储在数据库中。我希望能够在 map 上显示商店,如果商店正在营业,则用绿色标记显示;如果商店关门,则用红色标记显示(相对于当前时间)。

我的问题是我正在使用 string.compareTo(string) 方法来了解商店是关闭还是开放。假设我们是星期一,商店在凌晨 02:00(星期二早上)关门,当前时间是 23:00。我如何知道商店自 02:00 < 23:00 起仍在营业?

感谢您的回答,

阿诺

最佳答案

编辑:我正在编辑我的答案,以便更好地理解我的意思。另外,尝试备份一下并重新考虑存储数据结构的方式。这是编程中非常重要的部分,在大多数情况下,这可能是糟糕的设计和良好的设计实现之间的区别。

将时间存储为字符串不是一个好主意,但在您的情况下,您应该做的(我认为)是这样的:(此代码假设商店开门和关门时间是指同一天现在)

// Get the current time. 
Calendar now = Calendar.getInstance();

// Create the opening time.
Calendar openingTime = Calendar.getInstance();

// Set the opening hours. (IMPORTANT: It will be very useful to know the day also).
openingTime.set(Calendar.HOUR_OF_DAY, storeOpeningTime); // (storeOpeningTime is in 24-hours format so for 10PM use 22).

// Check that the store "was opened" today.
if (now.before(openingTime)) {
return CLOSED;
}

// If the store "was opened" today check that it's not closed already ("tricky" part).
// Create the closing time and closing time for the store.
Calendar closingTime = Calendar.getInstance();

// Check if we are in the AM part.
if (storeClosingTime < 12 // Closing time is in the AM part.
&& storeClosingTime < openingTime // Closing time is before opening time, meaning next day.
// now and closingTime is the same day (edge case for if we passed midnight when getting closingTime)
&& closingTime.get(Calendar.DAY_OF_WEEK) == now.get(Calendar.DAY_OF_WEEK)) {

// Closing time is next day.
closingTime.add(Calendar.DAY_OF_WEEK, 1);
}

// Set the closing hours.
closingTime.set(Calendar.HOUR_OF_DAY, storeClosingTime); // (storeClosingTime is in 24-hours format so for 10PM use 22).

// Check if the store is not closed yet.
if (now.before(closingTime)) {
return OPEN;
}

// Store is closed.
return CLOSED;

我还没有对此进行测试,但我认为根据您的问题以及如何保存打开和关闭时间,这应该可行。

重要:您可以对代码进行更多边缘情况和调整来改进它,但我现在没有足够的时间来执行此操作。我想提供总体指导来解决您的问题。处理时间和日期从来都不是一件有趣的事,您需要记住很多元素,例如时区以及不同国家冬季和夏季的时钟转换。无论如何,这都不是一个完成的实现,要使其达到完成状态并不简单。

关于java - 在 Android 中比较两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27504888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com