在将服务器时区转换为我的时区时遇到问题。我的服务器在美国。
这是我的代码:
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();
标题>