当前位置: 首页 > 知识库问答 >
问题:

SimpleDateFormat对象更改时区而不添加/减去正确的小时数[重复]

魏康安
2023-03-14

我有一个字符串,它表示UTC时区中的日期(因为我的数据库使用UTC)。我想用SimpleDateFormat将此字符串转换为日期。问题是,将其转换为CEST时区中的日期,而不添加UTC和CEST之间的2小时间隔。代码如下:

//This is a date in UTC
String text = "2020-09-24T09:45:22.806Z";
//Here I define the correct format (The final Z means that it's UTC)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
//Then I parse it
Date date = sdf.parse(text);
//Then I print it
System.out.println(date);  
Thu Sep 24 09:45:22 CEST 2020

为什么是Cest?我希望它保持UTC,但如果它必须成为CEST,至少添加2小时

共有1个答案

薛元忠
2023-03-14

您应该settimezone()设置为dateformat

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class Main {
    public static void main(String[] args) throws ParseException {
        //This is a date in UTC
        String text = "2020-09-24T09:45:22.806Z";
        //Here I define the correct format (The final Z means that it's UTC)
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        //Then I parse it
        Date date = sdf.parse(text);
        //Then I print it
        System.out.println(date);
    }
}

我还按照文档将'z'替换为X

 类似资料:
  • 我试图找到一个解决方案,如何将存储在数据库中的日期时间转换为yyyyy-mm-dd HH-mm-ss,并给它时区美国/Los_Angeles。 如果我更改时区,Carbon将自动从时间中减去7小时,这就是将时间从UTC更改为PST时发生的情况,但我的DB中的时间设置为PST时间。例如,我希望时间是今天上午10点,但如果我改变时区,碳将转换为今天凌晨3点。 如果时区改为PST,但仍然保持上午10点的

  • 我在将json文件中的日期转换为时间戳时遇到问题。当小时=12时,返回的时间戳不正确。 Java版本1.8.0\u 171 使用下面的代码片段,我希望输出是 2017-07-19 07:43:42.0 2017-07-18 08:43:42.0 2017-07-19 09:43:42.0 相反,我得到了 2017-07-19 07:43:42.0 2017-07-18 20:43:42.0 201

  • 问题内容: 我有一个DataFrame,其索引仅为datetime.time,而DataFrame.Index和datetime.time中没有方法来移动时间。datetime.time已替换,但仅适用于系列的单个项目吗? 这是使用的索引的示例: 问题答案: Liam的链接看起来不错,但也可以签出-看起来可以很好地与NumPy和Python的时间增量配合使用。 https://pandas.pyd

  • 我有一个js文件,当用户点击时,它会计算所有的总数,这会将所有点击的行相加,但如果数字包含小数,则不会正确添加,而是总是将00放在小数上 我还是得到25.00而不是25.01 有什么想法吗?我已经尝试了parseFloat来代替parseInt,但无法解析

  • 问题内容: 令我惊讶的是,JavaScript的Date对象没有实现任何类型的add函数。 我只是想要一个可以做到这一点的函数: 我只是希望有一个方向的指针。 我需要进行字符串解析吗? 我可以使用setTime吗? 毫秒呢? 像这样: 不过,这似乎确实很骇人-甚至行得通吗? 问题答案: JavaScript本身具有可怕的日期/时间API。尽管如此,您仍可以使用纯JavaScript进行此操作:

  • 问题内容: 我将为此使用api。我主要担心的是 将在4月19日2100hrs(9 PM)? 问题答案: 没有。 运行以下代码后: 您可以确保将cal设置为“ Apr 20th 0300hrs”之前六小时,但不能保证将其设置为“ Apr 19th 2100hrs”。