Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
时间问题。。以及如何在java中操作它_Java_Android_Time - Fatal编程技术网

时间问题。。以及如何在java中操作它

时间问题。。以及如何在java中操作它,java,android,time,Java,Android,Time,我有一个关于在java中使用时间的问题,更具体地说是在Android中 我正在开发一个需要检查的设备,看看今天是否完成了远程服务器的更新。我是通过比较昨晚/今早午夜的时间(以毫秒为单位)和当前的时间(以毫秒为单位)来实现的 因此,我的代码如下: Calendar now = Calendar.getInstance(); long milliseconds = now.getTimeInMillis(); long since_midnight = milliseconds%(86400

我有一个关于在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点的时间表示

我意识到这与夏令时有关,但我不确定如何解决这个问题

非常感谢您的帮助

谢谢


Kev

这是因为,正如您所说的,由于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();

谢谢,这正是我要找的。这可能很有用。如果你使用“代码”(带有1和0的图标)格式选项而不是块引号,你会得到更好的格式。使用Joda Time:@Peter,谢谢你的格式提示。我希望不必使用任何第三方插件,在独立java中肯定有办法解决这个问题?我不确定是否要添加到Android开发工具包附带的java中的原因,谢谢