我试着检查一个给定的日期是否在星期天晚上10点到星期五晚上10点之间
我想使用日历来实现这一点,我已经写了逻辑上不正确的一小部分代码。我很感激你的帮助
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(lastTickTime);
calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
int currentHour = calendar.get(Calendar.HOUR_OF_DAY);
int currentDay = calendar.get(Calendar.DAY_OF_WEEK);
int fromDay = 1;
int toDay = 6;
int fromHour = 22;
int toHour = 22;
boolean result = (currentDay <= fromDay && currentHour < fromHour) || (currentDay >= toDay && currentHour > toHour);
我知道上述方法是不对的,我不确定如何去做。谢谢
1条答案
按热度按时间7jmck4yq1#
更新:
我刚刚看到你在评论中提到了以下几点:
如果在星期五晚上10点到星期天晚上10点之间,则返回true
这与你在问题中提到的完全不同:
我试着检查一个给定的日期是否在星期天晚上10点到星期五晚上10点之间
我已经为您提供了解决方案,可以检查周日晚上10点到周五晚上10点之间的日期时间(检查部分,原始解决方案)。
以下给出了一周中星期五晚上10点到星期天晚上10点之间的日期时间的解决方案:
输出:
原始解决方案:
api的日期时间
java.util
以及它们的格式化api,SimpleDateFormat
过时且容易出错。建议完全停止使用它们,并切换到现代日期时间api。出于任何原因,如果您必须坚持使用Java6或Java7,您可以使用threeten backport,它将大部分java.time功能向后移植到Java6和Java7。
如果您正在为一个android项目工作,并且您的android api级别仍然不符合java-8,请检查通过desugaring提供的java8+api以及如何在android项目中使用threetenabp。
与
java.time
(现代日期时间api):输出:
该解决方案基于以下假设,如果与这些假设中的任何一个有偏差,您应该对其进行调整:
你想在时间里比较日期吗
UTC
. 该解决方案将日期时间字符串解析为本地日期时间(没有任何时区信息的日期时间),然后将其转换为ZonedDateTime
日期时间所属时区的。最后,这个ZonedDateTime
转换为时间中的日期UTC
.如果日期时间不在
Sun
,则应在最后一个日期进行比较Sun
为即将到来的Fri
.发生的时间
10 pm
不包括在内。附录:
如果您不必处理时区,并且只想检查给定的日期时间是否在星期五晚上10点到星期日晚上10点之间,您可以使用
LocalDateTime
.输出:
使用旧api:
输出: