Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java格式化日期_Java_Date_Format - Fatal编程技术网

Java格式化日期

Java格式化日期,java,date,format,Java,Date,Format,我在格式化日期时遇到问题。我想要以下输出: yyyy-MM-ddTHH:MM:ss+02:00 其中+02:00取决于您所在的时区,在我的例子中欧洲/阿姆斯特丹 我有这个功能: public String marshal(Date d) throws Exception { DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); String s = formatter.format(d);

我在格式化日期时遇到问题。我想要以下输出:

yyyy-MM-ddTHH:MM:ss+02:00

其中
+02:00
取决于您所在的时区,在我的例子中欧洲/阿姆斯特丹

我有这个功能:

public String marshal(Date d) throws Exception
{
    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
    String s = formatter.format(d);

    return s;
}
但它给了我:

2017-05-10T14:56:46+0200

如何在时区小时/分钟之间加上一个冒号?

它就在:

模式字母的数量指定格式化和解析的格式,如下所示[…]

从这些例子中:

“yyyy-MM-dd'HH:MM:ss.SSSXXX”2001-07-04T12:08:56.235-07:00

这意味着时区的冒号分隔版本可以在模式中使用“XXX”表示

TL;医生:使用

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");

试试“yyyy-MM-dd'HH:MM:ssXXX”。看,这似乎已经被问到和回答了:但是我会阅读@f1sh解释的文档,因为它会帮助您更好地理解您的问题。上面链接中的解决方案似乎指向相同的答案。此格式由ISO 8601标准定义。搜索“ISO8601”的堆栈溢出以查看许多现有帖子。你应该在发帖前彻底搜索。另外,避免使用旧的遗留日期时间类;现在被java.time类取代了。我说得再好不过@BasilBourque了。巴利曼和其他有同样问题的人,你可以从开始。谢谢你,老兄,这是个骗局,你可以接受这个正确答案:)