我想代表当前日期的1天作为纪元时间。今天的日期是10月20日。所以我想明天的时间。我有以下代码 -
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.DAY_OF_YEAR, 1);
int time = (int) ((cal.getTimeInMillis())/1000);
System.out.println("TIME IS: " +time);
所以我基本上想要在一年中的当天加上1天,即10月20日,并将其表示为纪元时间。我以秒为单位显示时间,因此除以1000.该程序的结果是1413958770.从今天开始的1天将是86400秒。纪元时间究竟是如何运作的?我理解它自1970年以来就给出了时间,但如果情况确实如此,那么价值就不会那么小:-)。我在这里错过了什么吗?
答案 0 :(得分:5)
让我们做一些基本的数学运算:
一年有365天
1413958770 / (60 * 60 * 365 * 24) = 44,8
(test it)
到1970年增加44,8年,你将在2014年。所以没有错。
答案 1 :(得分:3)
如果"今天"是时代,它应该代表" 0
,任何时间从"现在"衡量或与之比较应该从中减去,例如......
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
long now = cal.getTimeInMillis();
cal.add(Calendar.DAY_OF_YEAR, 1);
long then = cal.getTimeInMillis();
long secondsFromEpoch = (then - now) / 1000;
System.out.println(secondsFromEpoch);
答案 2 :(得分:1)
Unix时间或POSIX时间或纪元时间是用于描述时间瞬间的系统,定义为自1970年1月1日星期四00:00:00协调世界时(UTC)以来经过的秒数,不计闰秒。
在Java中,您只需使用以下语句即可获得它。
long current_time = System.currentTimeMillis() * 1000000L;
或
long epoch = date.getTime();
答案 3 :(得分:0)
各种计算机系统都使用a couple dozen epochs。 1970年初UTC是常见的,但肯定不是当前使用的唯一时代。并且各种系统使用整秒,毫秒,微秒和纳秒来跟踪纪元以来的时间。因此,不要使用含糊的术语"纪元时间",直接说出你想要的东西会更有用。在这种情况下,它似乎是从1970年世界贸易组织开始到明天的整个秒数#34;。
也许你只是对数学和数字感到好奇。但是如果你认真对待日期工作,那么我建议在Java 8中使用Joda-Time库或java.time包。
在拍摄日期和定义一天的开始时,时区至关重要。
以下是使用Joda-Time 2.5的示例代码。
DateTimeZone zone = DateTimeZone.forID( "Australia/Melbourne" );
DateTime tomorrowStart = DateTime.now( zone ).plusDays( 1 ).withTimeAtStartOfDay();
long secondsSinceUnixEpoch = ( tomorrowStart.getMillis() / 1000 );