在SimpleDateFormat()中更改时区



在将服务器时区转换为我的时区时遇到问题。我的服务器在美国。

这是我的代码:

long orderID = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat("hh':'mm':'ss' 'a");
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Kuala_Lumpur"));
Date orderTime = new Date(orderID);
System.out.print(sdf.format(orderTime));

但它仍然打印美国时间。如何解决这个问题?

与Java绑定的旧Java .util. date和. calendar类非常麻烦。避免它们。使用一个合适的日期时间库。也就是说,要么是Joda-Time,要么是java。

<标题> Joda-Time h1> Joda-Time 2.3中,一些示例代码:

实例化一个日期时间值,并分配一个时区。不像java。util。Date,一个Joda-Time DateTime实例知道它自己分配的时区。

DateTimeZone timeZone = DateTimeZone.forID( "Asia/Kuala_Lumpur" );
DateTime dateTime = DateTime.now( timeZone );

生成日期时间值的字符串表示形式。使用一种只显示时间而不显示日期的格式,这种格式使用JVM的默认Locale以本地化格式显示。如果您想要一个特定的非本地化格式,使用DateTimeFormat.forPattern来指定一个自定义格式。

DateTimeFormatter formatter = DateTimeFormat.forStyle( "-S" );
String output = formatter.print( dateTime );

如果你想指定一个Locale,调用formatter.withLocale( yourLocaleInstanceGoesHere)

转换为其他时区。

DateTime dateTimeUtc = dateTime.withTimeZone( DateTimeZone.UTC );

如果其他类需要转换为java.util.Date。

java.util.Date date = dateTime.toDate();

相关内容

  • 没有找到相关文章

最新更新