Java 使用currentTimeMillis及其';休息6小时
我有一个函数可以输出yyyy/mm/dd hh:mm:ss。一切都非常准确,除了小时,它似乎提前了6个小时。你知道为什么吗Java 使用currentTimeMillis及其';休息6小时,java,calendar,Java,Calendar,我有一个函数可以输出yyyy/mm/dd hh:mm:ss。一切都非常准确,除了小时,它似乎提前了6个小时。你知道为什么吗 public static void dateAndTime() { Calendar cal = Calendar.getInstance(); int month = cal.get(Calendar.MONTH)+1; int day = cal.get(Calendar.DATE); int year = cal.get(Calenda
public static void dateAndTime() {
Calendar cal = Calendar.getInstance();
int month = cal.get(Calendar.MONTH)+1;
int day = cal.get(Calendar.DATE);
int year = cal.get(Calendar.YEAR);
long totalMilliseconds = System.currentTimeMillis();
long totalSeconds = totalMilliseconds / 1000;
int currentSecond = (int)(totalSeconds % 60);
long totalMinutes = totalSeconds / 60;
int currentMinute = (int)(totalMinutes % 60);
long totalHours = totalMinutes / 60;
int currentHour = (int)(totalHours % 24);
System.out.println (year + "-" + month + "-" + day + " " + currentHour + ":" + currentMinute + ":" + currentSecond);
}
这是一个与时区有关的问题。
Calendar
类默认为本地时区,而方法System.currentTimeMillis()返回(如中所指定):
当前时间与UTC 1970年1月1日午夜之间的差值(以毫秒为单位)
提供自1970年1月1日名为:00:00:00 UTC的固定时间点以来经过的毫秒数
以下是获得正确时间的一种方法:
import java.util.Calendar;
import java.util.TimeZone;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
class Clock {
public static void main(String[] args) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("Europe/Athens"));
Date currentDate = new Date();
System.out.println(df.format(currentDate));
}
}
输出(雅典当地时间):
2013-08-24 23:54:45