当前位置: 首页 > 面试题库 >

Java日期时间格式转换

艾子石
2023-03-14
问题内容

在这里约会我的问题:

String datetime = "2012-03-24 23:20:51";

我知道该字符串位于UTC时区。我需要将此字符串转换为“ yyy-mm-dd’T’HH:mm:ssZ”格式。

为此,我使用以下代码:

    SimpleDateFormat inFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    inFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date inDate = inFormatter.parse(datetime);
    SimpleDateFormat outFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
    outFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
    String output = outFormatter.format(inDate);

问题是此代码在时区UTC + 1的服务器上运行,其结果是:

output = "2012-03-24T21:20:51+0000"

它从初始时间删除2小时,并放置UTC时间戳(0000)。

你能帮我解决这个问题吗?谢谢。


问题答案:

如果输出格式为UTC + 1,则应在外包格式器中使用该格式,而不是UTC。

outFormatter.setTimeZone(TimeZone.getTimeZone("UTC+01:00"));

另外,如果您不希望最后加上+0000,请移除Z

SimpleDateFormat outFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");


 类似资料:
  • 问题内容: 我有一行C#代码,试图在Java中复制。代码如下。 目的是将xml上下文中已经存在的DateTime替换为代表通用时间的DateTime。 我尝试使用 但由于不推荐使用Date.parse()而无法继续。我通读了Eclipse中的注释,并按建议尝试使用DateFormat,但DateFormat没有解析方法。 有人可以建议不使用任何第三方库的问题解决方案吗? 问题答案: 您可以使用:

  • 有没有一种方法可以编写一个模式,该模式解析器“要么”两个可选部分之一?类似于()? 例如: 我想分析短(

  • 下表显示可用于为图表中的日期时间字段创建用户定义的数据格式的说明符。 说明符 描述 D 将日显示为不带前导零的数字(1-31)。 DD 将日显示为带前导零的数字(01-31)。 M 将月份显示为不带前导零的数字(1-12)。 MM 将月份显示为带前导零的数字(01-12)。 MMM 将月份显示为缩写形式(Jan-Dec)。 MMMM 将月份显示为完整月份名(January-December)。 Y

  • 下表显示可用于为图表中的日期时间字段创建用户定义的数据格式的说明符。 说明符 描述 D 将日显示为不带前导零的数字(1-31)。 DD 将日显示为带前导零的数字(01-31)。 M 将月份显示为不带前导零的数字(1-12)。 MM 将月份显示为带前导零的数字(01-12)。 MMM 将月份显示为缩写形式(Jan-Dec)。 MMMM 将月份显示为完整月份名(January-December)。 Y

  • 下表显示可用于为图表中的日期时间字段创建用户定义的数据格式的说明符。 说明符 描述 D 将日显示为不带前导零的数字(1-31)。 DD 将日显示为带前导零的数字(01-31)。 M 将月份显示为不带前导零的数字(1-12)。 MM 将月份显示为带前导零的数字(01-12)。 MMM 将月份显示为缩写形式(Jan-Dec)。 MMMM 将月份显示为完整月份名(January-December)。 Y

  • 我想创建一个“yyyy-mm-dd hh:mm:ss”格式的日期对象。下面是我正在使用的代码。解析字符串后形成的日期对象不是所需的格式(预期为:2020-04-04 00:00:00,但实际为:Sat Apr 04 00:00:00 CDT 2020)。如何将日期转换为所需格式