用奇怪的时区解析 Java 中的日期

发布于 2024-10-30 08:21:04 字数 179 浏览 2 评论 0原文

我收到以下格式发送到我的应用程序的日期:

yyyy-MM-dd'T'HH:mm:ss.SSS-04:00

问题是时区,它不遵循 Z 格式 (-0400),也不遵循 z 格式 (GMT-04:00)。

我是否缺少其他格式选项,或者我可以输入解析这些时区的方法吗?

I'm getting dates sent to my application in the following format:

yyyy-MM-dd'T'HH:mm:ss.SSS-04:00

The problem is the TimeZone, it doesn't follow the Z format (-0400) and it doesn't follow the z format (GMT-04:00).

Is there another format option I'm missing or can I input a way to parse these TimeZones?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

洛阳烟雨空心柳 2024-11-06 08:21:04

考虑切换到 Joda time - 它比 java 本机日期库提供了更多的灵活性和可读性,包括处理时区风格(这是我切换的关键原因之一)。

Consider switching to Joda time - it offers a lot more flexibility and readability than the java native date libraries, including handling that time zone style (that's one of the key reasons I switched).

此生挚爱伱 2024-11-06 08:21:04

这种简单的方法开发起来很快而且很简单。

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;
    }
}

The naive approach is quick to develop and simple.

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;
    }
}
漫漫岁月 2024-11-06 08:21:04

您似乎获得了 XSD 日期时间格式。如果您想坚持使用纯开箱即用的 Java,请查看 javax.xml.datatype.XMLGregorianCalendar,它是为处理此类事情而构建的。

然而,正如另一位发帖者所说,使用第三方库(例如 Joda time)可能会更容易。 Java Calendar 对象使用起来总是有点麻烦。

You appear to be getting an XSD dateTime format. If you want to stick with pure out of the box Java look at javax.xml.datatype.XMLGregorianCalendar which was built to handle that sort of thing.

However as another poster has said you'd probably have an easier time using a third party library such as Joda time. Java Calendar objects are always a bit cumbersome to use.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文