我有一个关于在Java中使用时间的问题,更具体地说是在Android中。
我正在开发一种设备,该设备需要检查以查看今天是否已完成对远程服务器的更新。我通过比较昨晚/今天早晨午夜的时间(以毫秒为单位)与当前时间(以毫秒为单位)进行此操作。
所以我的代码如下:
Calendar now = Calendar.getInstance();
long milliseconds = now.getTimeInMillis();
long since_midnight = milliseconds%(86400000);
long checkpoint = (milliseconds - since_midnight);
但是,当我使用以下命令将检查点变量转换为日期时:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
last_logged_text=formatter.format(checkpoint);
我得到的时间代表是今天上午1点。
我意识到这与夏令时有关,但是我不确定如何解决。
任何帮助,不胜感激。
谢谢
凯夫
最佳答案
如您所言,这是因为时代和现在具有不同的时区,这要归功于DST。
一种更好的方式来做您想要的事情是获取“现在”,放弃时间部分,让您昨晚午夜。
Calendar midnight = Calendar.getInstance ();
midnight.set (Calendar.HOUR_OF_DAY, 0);
midnight.set (Calendar.MINUTE, 0);
midnight.set (Calendar.SECOND, 0);
midnight.set (Calendar.MILLISECOND, 0);
long millisSinceMidnight = System.currentTimeMillis() - midnight.getTimeInMillis();