解析字符串到日期[重复]

问题描述 投票:3回答:4

这个问题在这里已有答案:

我要解析的字符串:

太阳11月10日10:00:00 CET 2013

我的代码:

substrings = "Sun Nov 10 10:00:00 CET 2013"

SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM d HH:mm:ss ZZZ yyyy");
Date date = parserSDF.parse(substrings);

编译错误输出:

java.text.ParseException:Unparseable date:“Sun Nov 10 10:00:00 CET 2013”​​at java.text.DateFormat.parse(Unknown Source)...

java string date simpledateformat
4个回答
1
投票

可能你错过了正确的Locale。在您的示例中尝试这样做:

    SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM d HH:mm:ss ZZZ yyyy", Locale.US);

0
投票

ZZZ将尝试根据RFC 822时区格式化时区,改为使用zzz。

Here's the JavaDoc link供参考


0
投票

java.time

现代方法使用java.time类。

String input = "Sun Nov 10 10:00:00 CET 2013";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE MMM d HH:mm:ss z uuuu" , Locale.US );
ZonedDateTime zdt = ZonedDateTime.parse( input , f );

zdt.toString():2013-11-10T10:00 + 01:00 [欧洲/巴黎]

几年前,java.util.Date班取代了可怕的老java.time.Instant班。两者都代表UTC时刻。要从上面的时区调整到UTC,只需提取一个Instant对象。

Instant instant = zdt.toInstant() ;  // Adjust from time zone to UTC.

避免使用java.util.Date。但是,如果必须与尚未更新到java.time的旧代码进行互操作,则可以来回转换。查看添加到旧类的新方法,例如Date.fromDate::toInstant方法。


About java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,如java.util.DateCalendarSimpleDateFormat

现在在Joda-Timemaintenance mode项目建议迁移到java.time班。

要了解更多信息,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规格是JSR 310

您可以直接与数据库交换java.time对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*类。

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展了java.time。该项目是未来可能添加到java.time的试验场。你可能会在这里找到一些有用的类,如IntervalYearWeekYearQuartermore


-1
投票

问题是parserSDF采用字符串而不是数组和ParsePosition。我写这个是为了输出我想你想要的东西。

import java.text.*;
public class Parser{
    public static void main(String[] args){
    String input = "Sun Nov 10 10:00:00 CET 2013";
    SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM d HH:mm:ss ZZZ yyyy");
    System.out.println(parserSDF.parse(input, new ParsePosition(0)));
    }
}

我建议在API中查看SimpleDateFormatParsePosition

© www.soinside.com 2019 - 2024. All rights reserved.