使用Java在CST时区读取系统时间

时间:2014-09-10 14:18:26

标签: java

我正在尝试使用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;
}

2 个答案:

答案 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()));