java - Java 中的日历类,ParseException

标签 java calendar simpledateformat

所以,我在 Java 中试验 Calendar 类,我正在编写一个返回 Calendar 对象的方法。

对于上述方法,我想要的是返回一个包含 "Sun Feb 09 22:49:36 +0000 2014"Calendar 对象。

现在我(有争议的)并不懒惰,我已经在我的方法上做了一些工作。

    Calendar cal = Calendar.getInstance();

    SimpleDateFormat sdf = new SimpleDateFormat(
            "EEE MMM dd HH:mm:ss Z yyyy");
    try {
        cal.setTime(sdf.parse("Sun Feb 09 22:49:36 +0000 2014"));
    } catch (ParseException e) {
        e.printStackTrace();
    }

    return cal;

问题是它一直告诉我我得到了一个 ParseException,这是一个 “Unparseable date”

我认为我的逻辑是非常正确的,但我开始怀疑它。

我更喜欢它而不导入任何超过 Calendar 的东西,但是 SimpleDateFormat 似乎也很方便。

我总是说,进口越少越好。

有人看到我想要的是如何实现的吗?

编辑 1

尝试在 main 方法中运行代码并打印出结果,在 Exception 中没有区别。

以下是我的主要内容:

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


public class TestingMyCalendar {

public static void main(String[] args) {

    Calendar cal = Calendar.getInstance();

    SimpleDateFormat sdf = new SimpleDateFormat(
            "EEE MMM dd HH:mm:ss Z yyyy");
    try {
        cal.setTime(sdf.parse("Sun Feb 09 22:49:36 +0000 2014"));
    } catch (ParseException e) {
        e.printStackTrace();
    }

    System.out.println(cal);

}
}

对于那些感兴趣的人,以下是主崩溃后我的整个控制台文本:

java.text.ParseException: Unparseable date: "Sun Feb 09 22:49:36 +0000 2014"
at java.text.DateFormat.parse(Unknown Source)
at TestingMyCalendar.main(TestingMyCalendar.java:15)
java.util.GregorianCalendar[time=1391987659892,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Berlin",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=143,lastRule=java.util.SimpleTimeZone[id=Europe/Berlin,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2014,MONTH=1,WEEK_OF_YEAR=7,WEEK_OF_MONTH=2,DAY_OF_MONTH=10,DAY_OF_YEAR=41,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=14,SECOND=19,MILLISECOND=892,ZONE_OFFSET=3600000,DST_OFFSET=0]

最佳答案

您可能需要将默认语言环境设置为 Locale.ENGLISH,否则解析器可能会在周日的 Sun 上阻塞。

尝试:

   Locale.setDefault(Locale.ENGLISH); 

或者,将其指定为构造函数调用的一部分:

    SimpleDateFormat sdf = new SimpleDateFormat(
        "EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);

关于java - Java 中的日历类,ParseException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21666357/

相关文章:

java - 如何解析 "dd-MM"日期格式以获取当前年份?”

java - 实现compareTo方法的故障排除

javascript - UI Bootstrap datepicker 日历不在文本框中显示日期

c - 使用 C 中的日历概念计算错误的日期

java - 如何使用 SimpleDateFormat 解析多种格式的日期

java - 如何将日期增加一个

java - 在 GAE 数据存储中使用投影查询时,返回 null 而不是字符串值 (Java)

java - 我们可以使用 javassist 向现有类添加非原始字段吗?

Java单例模式在多线程中输出两个相同的对象?

javascript - 从 Google 日历 API 事件(React、Javascript)获取 "Recurrence"