我正在尝试使用Java在CST时区中读取系统日期。我尝试了以下代码,但每当我使用formatter.parse()
时,它都会在EST时区返回时间。
private Date getTodayInCST() {
Calendar currentdate = Calendar.getInstance();
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
TimeZone obj = TimeZone.getTimeZone("CST");
formatter.setTimeZone(obj);
String today = formatter.format(currentdate.getTime());
try {
return formatter.parse(today);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
答案 0 :(得分:2)
java.util.Date
个对象本身不包含任何时区信息 - 您无法在Date对象上设置时区。 Date对象包含的唯一内容是自“epoch” - 1970年1月1日00:00:00 UTC以来的毫秒数。
如果你想设置时区,请尝试这种方式
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
format.setTimeZone(TimeZone.getTimeZone("CST"));
System.out.println(format.format(new Date()));
答案 1 :(得分:1)
如果想要代码提供当前时间,考虑从CST到CDT的夏令时调整,反之亦然,你可以使用 " CST6CDT"时区。代替" CST"在SimpleDateFormat中。
SimpleDateFormat cstCdtFormat=new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
cstCdtFormat.setTimeZone(TimeZone.getTimeZone("CST6CDT"));
System.out.println(cstCdtFormat.format(new Date()));