以下代码将epoch
5177706 秒添加到当年的 1 月 1 日,即 2012 年 1 月 1 日 00:00:00:000 GMT。
public static void main(String[] args) {
String mytime = "5177706";
long epoch = Long.parseLong(mytime);
// Get January 1st of the current year in GMT.
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
calendar.set(Calendar.MONTH, Calendar.JANUARY);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
// Convert epoch to milliseconds and add to January 1st of the current year.
Date expiry = new Date(calendar.getTime().getTime() + epoch * 1000);
// Output the expiry date in Asia/Singapore (SGT) time.
DateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
format.setTimeZone(TimeZone.getTimeZone("Asia/Singapore"));
System.out.println(format.format(expiry));
}
上面的代码输出Thu Mar 01 06:15:06 SGT 2012
. Mar 02 05:45:06 SGT
由于以下原因,月、日和时间与预期不同:
新加坡标准时间 (SGT)于 1981 年 12 月 31 日从 UTC+07:30 更改为 UTC+08:00,因此时间增加 30 分钟:
Mar 02 05:45:06 SGT
+ 30 分钟 = Mar 02 06:15:06 SGT
。
2012 年是闰年,所以减去一天:
Mar 02 06:15:06 SGT
- 1 天 =Mar 01 06:15:06 SGT