java - 将 EST 中的字符串转换为 PST 中的日期

标签 java date

我尝试了以下方法并在 Web 中搜索以找到解决方案,但没有成功:寻找将 IST 中的字符串转换为 PST 的解决方案:

String string = new Date().toString();
        System.out.println(string);
        SimpleDateFormat dt = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
        dt.setTimeZone(TimeZone.getTimeZone("PST"));
        Date D = dt.parse(string);
        System.out.println(""+ D);

即使我将时区设置为 PST,我也会看到 IST 中的内容 这是输出:

2017 年 4 月 18 日星期二 18:58:09 IST 4 月 18 日星期二 18:58:09 IST 2017

我在这里尝试了另一个选项,我看到它甚至显示了 PST 时间,但我看到下面的输出有点令人困惑:

public static Date convertFromOneTimeZoneToOhter(Date dt,String from,String to ) {

          TimeZone fromTimezone =TimeZone.getTimeZone(from);//get Timezone object
          TimeZone toTimezone=TimeZone.getTimeZone(to);

          long fromOffset = fromTimezone.getOffset(dt.getTime());//get offset
          long toOffset = toTimezone.getOffset(dt.getTime());

          //calculate offset difference and calculate the actual time
          long convertedTime = dt.getTime() - (fromOffset - toOffset);
          Date d2 = new Date(convertedTime);

          return d2;
    }

输出: 转换日期:2017 年 4 月 18 日星期二 06:28:09 IST

有人可以帮忙解决这个问题吗:我找到了很多将 IST 日期时间转换为 PST 字符串的解决方案,但没有找到将 IST/EST 日期转换为 PST 日期的解决方案。 正如我上面提到的,我们可以格式化为字符串,但我正在寻找转换回日期的示例

最佳答案

您应该研究一下 Java 8 直接处理时区的新 Date API

// Get the current date and time
      ZonedDateTime date1 = ZonedDateTime.parse("2007-12-03T10:15:30+05:30[Asia/Karachi]");
      System.out.println("date1: " + date1);

      ZonedDateTime zonedDateTime = ZonedDateTime.now();
      System.out.println("Zoned Date Time: " + zonedDateTime);

      ZoneId id = ZoneId.of("Europe/Paris");
      System.out.println("ZoneId: " + id);

      ZoneId currentZone = ZoneId.systemDefault();
      System.out.println("CurrentZone: " + currentZone);

打印:

date1: 2007-12-03T10:15:30+05:00[Asia/Karachi]
Zoned Date Time: 2017-04-18T09:52:09.045-04:00[America/New_York]
ZoneId: Europe/Paris
CurrentZone: America/New_York

关于java - 将 EST 中的字符串转换为 PST 中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43473902/

相关文章:

java - appengine 将 User 视为附加参数

java - 用 selenium 删除 IE 中的地址栏

java - 什么是 textview.setTextSize()?

java - 套接字编程、Java、Tomcat 6、扩展

date - 在mongodb中按日期分组

c# - 选择mysql之间的日期

Python/Pandas - 从列值重新排列字符串

java - 比较两个 ArrayList 索引时出现 IndexOutOfBoundsException

java.text.ParseException : Unparseable date: "2018-05-23T06:39:37+0000" 异常

ruby-on-rails - 为什么介于两者之间? ruby 中 Date 和 DateTime 的工作方式不同?