我使用的 API 需要一个以秒为单位的日期参数,即
int
。
我的问题是,我目前将此时间存储在
java.util.date
中,我想知道是否有某种方法可以将 java.util.date
变量转换为秒,以便我可以将其放入 API 所需的 int
参数中?
import java.util.Date;
...
long secs = (new Date().getTime())/1000;
...
请参阅: http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#getTime()。
从 Java 8 开始,有一个优雅的方法,它以秒为单位返回纪元时间(自 1970 年 1 月 1 日 0:00:0 以来的秒数)。然后,您可以将该值存储为数值:在本例中为“long”。
long timestamp = java.time.Instant.now().getEpochSecond();
java.util.Date.getTime()
它返回此 Date 对象表示的自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。
java.util.Date date=new Date();
System.out.println(date.getTime());
输出: 1340128712111
要从毫秒中获取秒,您需要将其除以
1000
。
long secs = date.getTime()/1000;
System.out.println(secs);
输出: 1340128712
或者
Instant.getEpochSecond()
返回 Java 纪元 1970-01-01T00:00:00Z 的秒数。从 Java v1.8 开始可用 docs.
秒数本身并没有多大意义。当前分钟内有多少秒?自 1970 年 1 月 1 日 0:00:00 起经过了多少秒?午餐后经过了多少秒?能具体点吗
将其放入 API 中也没有多大意义,除非您准确指定您正在使用哪个 API,以及您试图将这些秒放在哪里。