这个字符串的日期格式是什么?

时间:2017-03-31 23:48:53

标签: date groovy

我将以下日期作为字符串

2017-03-01T10:15:41-0800

我试图与

一起使用
new Date().parse('dd/mm/yyyy', dateString)

但是,我无法弄清楚格式。

4 个答案:

答案 0 :(得分:1)

考虑使用SimpleDateFormat

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

class Main {
  public static void main(String[] args) {
    try {
      SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssX");
      Date parsed = format.parse("2017-03-01T10:15:41-0800");
    } catch (ParseException e){
      e.printStackTrace();
    }
  }
}

试试here!

答案 1 :(得分:1)

您的dateString和日期格式不匹配。 Groovy风格:

def dateString =  "2017-03-01T10:15:41-0800"
new Date().parse("yyyy-MM-dd'T'HH:mm:ssZ", dateString)

结果:

Wed Mar 01 21:15:41 EAT 2017

您可以参考here了解有关日期格式模式的更多信息。

答案 2 :(得分:0)

日期类包含自己的静态 解析方法( JB Nizet 对他的评论错误问题)。

有关详细信息,请参阅http://docs.groovy-lang.org/latest/html/groovy-jdk/java/util/Date.html#parse(java.lang.String,%20java.lang.String)

因此,如果您只执行一次解析,请使用此方法。

另一方面,如果您计划执行多次次转化, 创建 SimpleDateFormat 实例(一次)效率更高 然后多次使用它。

答案 3 :(得分:0)

如果可以,并且您使用的是Java 8,请避免使用java.util.Date,并将其解析为新的java.time类之一:

import java.time.*
import java.time.format.DateTimeFormatter

def dateString =  "2017-03-01T10:15:41-0800"

def date = OffsetDateTime.parse(dateString,
                                DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"))

如果您希望将此时间放在另一个区域(即:UTC),您可以执行以下操作:

def utcDate = date.atZoneSameInstant(ZoneOffset.UTC)