已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
2天前关闭。
Improve this question
我想将日期格式从"20230523154325"
更改为2023-05-23T15:43:25+0000"
。
我有这段代码,但不幸的是结果是这样的:"2023-05-23T15:43:25+0300"
。
所以我不想有+0300
,我想在最后有+0000
。因此,这部分2023-05-23T15:43:25
应该完全相同,但+0300
应该是+0000
。最后有这个+0000
很重要。任何反馈将不胜感激!
public static void main(String[] args) {
String oldDate = "20230523154325";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date newDateFormat = null;
try {
newDateFormat = sdf.parse(oldDate);
} catch (ParseException e) {
throw new RuntimeException(e);
}
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
System.out.println("The date is " + sdf1.format(newDateFormat));
}
2条答案
按热度按时间hwamh0ep1#
我想将日期格式从20230523154325更改为2023-05- 23 T15:43:25+0000
如果您使用的是Java 8或更高版本,则可以使用
java.time
来实现。示例代码
输出
有一些预构建的标准/通用格式,如
DateTimeFormatter.ISO_OFFSET_DATE_TIME
,值得一看。但是,在这种情况下,您必须手动创建这两个DateTimeFormatter
,因为没有一个预构建的DateTimeFormatter
可以解析您的输入格式,也没有一个可以生成您想要的输出。为什么您的尝试没有产生预期的结果?
你的尝试涉及到你的机器/jvm的区域/偏移量,当代码在另一台具有不同区域/偏移量的机器上执行时,它甚至会改变偏移量。
这就是为什么你
java.util.Date
和java.text.SimpleDateFormat
无论何时/何地你可以...java.time
,因为您可以完全控制区域/偏移量处理精简版
输出
fafcakar2#
不要使用SimpleDateFormat。SimpleDateFormat示例有一个时区,这会导致像您所观察到的那样的误导性解析结果。
考虑到你的特定用例的简单性,我会完全忘记日期时间解析,而只是使用StringBuilder来插入字符: