使用java转换日期更快的时区 [英] Converting timezone for date faster using java

查看:129
本文介绍了使用java转换日期更快的时区的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经写了这个方法来转换日期时区。如何进一步减少此方法的执行时间。

I have written this method for converting a date time zone. How do i reduce the execution time of this method further.

public static Timestamp convertTimeZone(final Timestamp fromDate, final TimeZone fromTZ, final TimeZone toTZ ){
   Long timeInDate  =  fromDate.getTime() ;
   int fromOffset = fromTZ.getOffset(timeInDate);
   int toOffset = toTZ.getOffset(timeInDate);
   Timestamp dateStamp = new Timestamp(fromDate.getTime());

   if (fromOffset >= 0){
      int diff = 0;

      if (toOffset > 0){
          diff = (fromOffset - toOffset);
      } else {
          diff = (fromOffset + Math.abs(toOffset));
      }

      long date = fromDate.getTime() - diff;
      dateStamp.setTime(date);
   } else {
      int diff = 0;

      if (toOffset > 0){
          diff = (Math.abs( fromOffset) + toOffset);
      } else {
          diff = (Math.abs( fromOffset) - Math.abs(toOffset));
      }

      long date = fromDate.getTime() + diff;
      dateStamp.setTime(date);
   }

   return dateStamp;
}


推荐答案

使用 joda-time 可能如下所示:

DateTime dt = new DateTime(DateTimeZone.forID("GMT"));
System.out.println(dt); // 5 am
dt = dt.withZone(DateTimeZone.forID("EET"));
System.out.println(dt); // 8 am

请注意, Timestamp 没有时区的概念,所以它不适合代表它。

Note that Timestamp has no notion of Timezone so it is not suitable for representing it.

您的解决方案将具有良好的运行时间,因为它是O(1)。很难阅读。

Your solution will have a good running time, since it's O(1). It's harder to read though.

这篇关于使用java转换日期更快的时区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆