Java 从时间戳中提取时间

Java 从时间戳中提取时间,java,timestamp,Java,Timestamp,为什么我不能用这种方式清除时间戳中的时间: one day == 24 * 3600 * 1000 == 86400000 milliseconds. long ms = new Date().getTime(); //Mon Sep 03 10:06:59 CEST 2012 Date date = new Date(ms - (ms % 86400000)); 为什么这是2012年9月3日星期一02:00:00而不是2012年9月3日星期一00:00:00 为什么我不能用这种方式从ti

为什么我不能用这种方式清除时间戳中的时间:

one day == 24 * 3600 * 1000 == 86400000 milliseconds.

long ms = new Date().getTime();  //Mon Sep 03 10:06:59 CEST 2012
Date date = new Date(ms - (ms % 86400000));
为什么这是2012年9月3日星期一02:00:00而不是2012年9月3日星期一00:00:00

为什么我不能用这种方式从timestamm中清除时间

您正确地清除了UTC中的时间部分。日期中的毫秒值始终相对于UTC中1970年1月1日午夜。但是,由于Date.toString的工作方式,您不能以UTC显示它。它始终使用系统本地时区。请注意,日期本身没有时区的概念。自1970年1月1日UTC午夜以来,只有毫秒数

从时间戳中清除时间的概念如果不指定您正在谈论的时区,就没有真正的意义,因为同一时间戳将有不同的时间,甚至不同时区的日期

老实说,我建议在任何重要的日期/时间工作中使用。然后,您可以创建一个LocalDate,它显然只表示一个日期,而从日期或瞬间到LocalDate的转换将使您可以轻松地指定要使用的时区

为什么我不能用这种方式从timestamm中清除时间

您正确地清除了UTC中的时间部分。日期中的毫秒值始终相对于UTC中1970年1月1日午夜。但是,由于Date.toString的工作方式,您不能以UTC显示它。它始终使用系统本地时区。请注意,日期本身没有时区的概念。自1970年1月1日UTC午夜以来,只有毫秒数

从时间戳中清除时间的概念如果不指定您正在谈论的时区,就没有真正的意义,因为同一时间戳将有不同的时间,甚至不同时区的日期

老实说,我建议在任何重要的日期/时间工作中使用。然后,您可以创建一个LocalDate,它显然只表示一个日期,而从日期或瞬间到LocalDate的转换将使您可以轻松地指定要使用的时区

实际上,我想把它和另一个不考虑时间的日期进行比较

要比较日期,我建议使用支持此功能的JodaTime与

实际上,我想把它和另一个不考虑时间的日期进行比较

要比较日期,我建议使用支持此功能的JodaTime与

试试这个

Calendar c = Calendar.getInstance();
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
String strDate = df.format(c.getTime()));
现在,通过这种方式,您可以获得另一个日期,然后进行比较……因为它们现在是字符串格式。

试试这个

Calendar c = Calendar.getInstance();
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
String strDate = df.format(c.getTime()));


现在你可以有另一个日期,然后比较它…因为它们现在是字符串格式。

不,我实际上想把它与另一个日期进行比较,而不是考虑白天的时间,因为你需要考虑你的时区是什么。但是如果我比较日期,我需要什么时区?我建议你使用JordaMe,请看我的示例。您的新LocalDate调用注释有点误导-因为它将使用系统本地时区中的当前时间。否,实际上,我想把它与另一个日期进行比较,而不是考虑白天的时间,因为你需要考虑你的时区是什么。但是如果我只是比较日期,我需要什么时区?我建议你使用笑话,请看我的示例。您新的LocalDate调用注释有点误导-因为它将使用系统本地时区中的当前时间。那么我应该如何将其与不考虑一天中时间的另一个日期进行比较?@fatra:在哪个时区?你明白你所问的问题的根本吗?包括一个库来做这个简单的事情太重了。我将只使用Calendar.set方法将时间归零我这里没有任何时区。我得到了一个日期,我必须将它与另一个日期进行比较。@fatra:一个比较号。对于一个有多个定义不清的日期操作的应用程序,它将为您节省比成本更多的头痛。那么,我应该如何将它与另一个日期进行比较,而不考虑一天中的时间?@fatra:在什么时区?你明白你所问的问题的根本吗?包括一个库来做这个简单的事情太重了。我将只使用Calendar.set方法将时间归零我这里没有任何时区。我得到了一个日期,我必须将它与另一个日期进行比较。@fatra表示一个比较号。对于一个有多个定义不清的日期操作的应用程序,它将为您节省比成本更多的头痛。
Calendar c = Calendar.getInstance();
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
String strDate = df.format(c.getTime()));