java - 使用自定义时间获取当前日期

标签 java android date datetime

我有一些时间 String 例如 "09:00""17:30" 我需要检查当前是否时间在该范围内。

我想我可以做这样的比较:

SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date now = new Date();
Date begin;
Date end;

begin = format.parse(begin_string);
end = format.parse(end_string);

if (now.compareTo(begin) > 0 && end.compareTo(now) > 0)
    return true;
else
    return false;

事实证明,当我解析字符串时,时间解析正确,但日期设置为 1970 年 1 月 1 日。这样,代码将始终返回 false

我想知道如何将 beginend 设置为当前日期,但时间来自它们的字符串。

最佳答案

您也可以像这样重用当前时间的格式对象:

SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date now = new Date();
String time = format.format(now); // format to wall time loosing current date
System.out.println(time);
now = format.parse(time); // reparse wall time
System.out.println(now);

因此,您可以隐式使用系统的标准时区将 now 转换为 1970,然后可以使用它与 beginend 进行直接比较>.

Date begin = format.parse("09:00");
Date end = format.parse("21:30");
return (begin.before(now) && end.after(now)); // open-bounded interval

关于java - 使用自定义时间获取当前日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22696124/

相关文章:

android - 让 Robolectric 与 Android Studio 1.1.0 一起工作的 list 和设置问题

android - 发现自定义格式的 nfc 标签时打开我的应用程序

使用点 "."而不是破折号 "-"时,Java 无法解析日期

php - Joomla 3 如何设计 PHP 日期格式

php - 根据服务器时区动态打印时间

java - 在 Java 中将字节转换为 int

java - JProgressBar 不会更新

java - Java 中的字符串解析

java - 使用 'OPE' =? 等语法时,字符串到数字的转换失败

android - Google Play 游戏插件的 Social.ReportProgress 方法始终返回 false