有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何检查ISO日期字符串中是否存在偏移量

给定这样的ISO字符串

String dateTime = "2016-07-11T16:50:22.00+05:00";

有没有办法找到特定字符串中存在的偏移量,或者不使用joda

这就是我到目前为止所做的代码,如果存在偏移量,就得到偏移量

public static String getDateTimeWithTimeZoneOffset(String dateTimeString)
    {
        DateTimeFormatter df = ISODateTimeFormat.dateTimeParser().withOffsetParsed();
        DateTime nDt = df.parseDateTime(dateTimeString);
        DateTimeFormatter dateFormatterWithoutMillis = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
        return dateFormatterWithoutMillis.print(nDt) + SPACE + nDt.getZone();
    }

上面的代码给出了下面的输出

2016-07-11T16:50:22 +05:00

但是当我有一个没有偏移量的字符串时,就像下面这个

2016-07-11T16:50:22

同样的代码会在默认时区中显示并打印如下

2016-07-11T16:50:22 America/Chicago

我是否可以检查字符串中是否存在偏移量,如果没有,是否抛出异常


共 (1) 个答案

  1. # 1 楼答案

    试试这个:

    String dateWithoutMillis = dateFormatterWithoutMillis.print(nDt) + SPACE + nDt.getZone();
    if (dateWithoutMillis.contains("/") {
      throw new InvalidDateStringException("NO OFFSET");
    } else {
      return dateWithoutMillis
    }
    

    别忘了添加一个例外:

    public static class InvalidDateStringException extends Exception {
    
        public InvalidDateStringException(String message){
            super(message);
        }
    
    }