不带“:“的时区的java日期模式

bvk5enib  于 2023-01-01  发布在  Java
关注(0)|答案(3)|浏览(120)

我将与第三方API。他们接受的日期模式如下:

2012-02-15T17:34:37.937-0600

我知道图案应该是一样的

yyyy-MM-ddTHH:mm:ss.s

但是我不确定如何表示最后一个"-0600"时区?我想标准时区是"-06:00",有人知道如何去掉日期模式中的":"吗?
谢谢。

brqmpdu1

brqmpdu11#

也许你想要"Z"
参见http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

  • "z"表示"太平洋标准时间;太平洋标准时间;格林尼治标准时间-08:00 "
  • "Z"给你"-0800"

此代码:

final SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SZ");

产生:
2012年5月11日12:21:57.598 + 1000

sqxo8psd

sqxo8psd2#

SimpleDateFormat对于自定义字符串表示应该很有帮助:
Z时区RFC 822时区-0800

6qfn3psc

6qfn3psc3#

我知道图案应该是一样的
第一个月
不,这个模式有两个问题:
1.小数秒的符号是S,但您使用的是s
1.模式中缺少ZoneOffset说明符Z

Java.时间

accepted answer使用SimpleDateFormat,这在2012年是正确的做法。2014年3月,java.util日期-时间API及其格式化API SimpleDateFormatmodern Date-Time API取代。从那时起,强烈建议停止使用传统的日期-时间API。

    • 使用现代日期-时间API的演示**:
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

class Main {
    public static void main(String[] args) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSZ", Locale.ENGLISH);
        System.out.println(OffsetDateTime.now(ZoneOffset.of("-06:00")).format(dtf));
    }
}
    • 输出**:
2022-12-28T13:21:05.459-0600

ONLINE DEMO
从**Trail: Date Time**了解有关现代日期-时间API的更多信息。

相关问题