Java 从日期获取时区实例
使用以下代码-Java 从日期获取时区实例,java,Java,使用以下代码- Timestamp ts = (Timestamp)results.get(0); SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss Z"); System.out.println(sdf.format(new Date(ts.getTime()))); 我得到的输出为:04/29/2013 15:08:30+0530 我想从时间戳创建一个时区实例,所以尝试了以下方法-
Timestamp ts = (Timestamp)results.get(0);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss Z");
System.out.println(sdf.format(new Date(ts.getTime())));
我得到的输出为:04/29/2013 15:08:30+0530
我想从时间戳创建一个时区实例,所以尝试了以下方法-
SimpleDateFormat FORMATTER = new SimpleDateFormat("Z");
String tzString = FORMATTER.format(ts);
// the tzString comes out to be +0530 (which is correct)
TimeZone tz = TimeZone.getTimeZone(tzString);
System.out.println(tz);
但最后一个时区实例是GMT,因为它无法识别+0530
那么,如何在这里获得正确的时区实例呢?在模式中使用小写的
z
。这应该返回“GMT+0530”,这将起作用。在模式中使用小写的z
。这将返回“GMT+0530”
,这将起作用。您可以简单地执行以下操作,而不是使用SimpleDataFormat
:-
Calendar cal = Calendar.getInstance();
cal.setTime(new Date(ts.getTime()));
TimeZone tz = cal.getTimeZone();
System.out.println(tz);
您可以简单地执行以下操作,而不是使用
SimpleDataFormat
:-
Calendar cal = Calendar.getInstance();
cal.setTime(new Date(ts.getTime()));
TimeZone tz = cal.getTimeZone();
System.out.println(tz);
无法从java.sql.Timestamp获取时区,因为它不包含时区。在你的情况下,你只是得到你的默认时区。这没有道理。与TimeZone.getDefault()相同 无法从java.sql.Timestamp获取时区,因为它不包含时区。在你的情况下,你只是得到你的默认时区。这没有道理。与TimeZone.getDefault()相同 我尝试了以下代码:
Timestamp ts = new Timestamp(System.currentTimeMillis());
然后,为了从时间戳中获取时区实例,我执行了以下操作:
SimpleDateFormat FORMATTER = new SimpleDateFormat("Z");
TimeZone tzone = FORMATTER.getTimeZone();
System.out.println(tzone.getDisplayName());
System.out.println(tzone.getID());
我得到:
Central European Time
Europe/Berlin
所以我的时区是+0200,而不是格林尼治标准时间
希望这就是您想要的。我尝试了以下代码:
Timestamp ts = new Timestamp(System.currentTimeMillis());
然后,为了从时间戳中获取时区实例,我执行了以下操作:
SimpleDateFormat FORMATTER = new SimpleDateFormat("Z");
TimeZone tzone = FORMATTER.getTimeZone();
System.out.println(tzone.getDisplayName());
System.out.println(tzone.getID());
我得到:
Central European Time
Europe/Berlin
所以我的时区是+0200,而不是格林尼治标准时间
希望这就是你想要的。我想你是对的。虽然我从一个日期获取时区实例,但它不是数据库的实例。无论如何,日期只是毫秒,没有时区。如果您是从带有时区的日期的字符串表示中获取它,那么这是有意义的。实际上,我正在尝试使用HQL获取数据库时区。让我看看Hibernate是否允许从数据库中获取时区字符串。我想让它成为通用的,这样它可以适用于所有数据库。我想你是对的。虽然我从一个日期获取时区实例,但它不是数据库的实例。无论如何,日期只是毫秒,没有时区。如果您是从带有时区的日期的字符串表示中获取它,那么这是有意义的。实际上,我正在尝试使用HQL获取数据库时区。让我看看Hibernate是否允许从数据库中获取时区字符串。我想让它成为通用的,这样它可以适用于所有数据库。我想这是本地时区,因为根本不使用ts(时间戳)。我想这是本地时区,因为根本不使用ts(时间戳)。