用Java解析带有奇怪时区的日期
我将以以下格式向我的申请发送日期:用Java解析带有奇怪时区的日期,java,date-format,Java,Date Format,我将以以下格式向我的申请发送日期: yyyy-MM-dd'T'HH:mm:ss.SSS-04:00 问题是时区,它不遵循Z格式(-0400),也不遵循Z格式(GMT-04:00) 我是否还缺少另一种格式选项,或者可以输入解析这些时区的方法?考虑切换到-它比java原生日期库提供了更多的灵活性和可读性,包括处理时区样式(这是我切换的关键原因之一).考虑切换到-它比java原生日期库提供了更多的灵活性和可读性,包括处理时区样式(这是我切换的关键原因之一)。这种简单的方法开发速度快且简单 class
yyyy-MM-dd'T'HH:mm:ss.SSS-04:00
问题是时区,它不遵循Z格式(-0400),也不遵循Z格式(GMT-04:00)
我是否还缺少另一种格式选项,或者可以输入解析这些时区的方法?考虑切换到-它比java原生日期库提供了更多的灵活性和可读性,包括处理时区样式(这是我切换的关键原因之一).考虑切换到-它比java原生日期库提供了更多的灵活性和可读性,包括处理时区样式(这是我切换的关键原因之一)。这种简单的方法开发速度快且简单
class TimeTest {
public static void main(String[] args) {
String s = "yyyy-MM-dd'T'HH:mm:ss.SSS-04:00";
String t = "yyyy-MM-dd'T'HH:mm:ss.SSS-0400";
System.out.println(s + " --> " + fix(s));
System.out.println(t + " --> " + fix(t));
}
static String fix(String s) {
int last = s.lastIndexOf(":");
if(last == s.length() - 3) {
s = s.substring(0,last) + s.substring(last+1);
}
return s;
}
}
这种天真的方法发展迅速,而且简单
class TimeTest {
public static void main(String[] args) {
String s = "yyyy-MM-dd'T'HH:mm:ss.SSS-04:00";
String t = "yyyy-MM-dd'T'HH:mm:ss.SSS-0400";
System.out.println(s + " --> " + fix(s));
System.out.println(t + " --> " + fix(t));
}
static String fix(String s) {
int last = s.lastIndexOf(":");
if(last == s.length() - 3) {
s = s.substring(0,last) + s.substring(last+1);
}
return s;
}
}
您似乎正在获取XSD日期时间格式。如果您想坚持使用纯开箱即用的Java,请查看javax.xml.datatype.XMLGregorianCalendar,它是为处理这类事情而构建的
然而,正如另一张海报所说,使用第三方库(如Joda time)可能会更容易。Java日历对象的使用总是有点麻烦。您似乎得到了XSD日期时间格式。如果您想坚持使用纯开箱即用的Java,请查看javax.xml.datatype.XMLGregorianCalendar,它是为处理这类事情而构建的
然而,正如另一张海报所说,使用第三方库(如Joda time)可能会更容易。Java日历对象的使用总是有点麻烦。这是一致的行为吗?如果是这样,您可以使用正则表达式来重新格式化字符串。这是一致的行为吗?如果是这样,您可以使用正则表达式来重新格式化字符串。+ 1,OPS日期格式看起来是标准的XSD数据格式,它在时区中间添加了麻烦的冒号。+ 1,OPS日期格式看起来是标准的XSD数据格式,它在时区中间添加了麻烦的冒号。