2017-03-31 116 views
-1

我有以下日期为一个字符串这个字符串的日期格式是什么?

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

,我试图用

new Date().parse('dd/mm/yyyy', dateString) 

然而使用,我想不通的格式。

+1

Date类中没有这样的解析方法。 Java字符串被双引号包围。所以代码甚至不能编译。而这种模式显然不是你要给的那个。 Google为“如何用Java解析日期”。你会得到很多相关的结果。 –

+0

@JBNizet我认为这可能是一个misstagging的情况,因为这是有效的groovy – weston

+1

@ user304966这实际上是一个常规问题? – weston

回答

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有关日期格式模式的更多信息。

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!

+0

这是在Groovy中解析日期的一种非常尴尬的方式。即使在Java中,Java 8的日期类也不如此。 – BalRog

+0

当我回答这个问题时,只有标签java没有Groovy。 – shash678

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) 
相关问题