Java Android SimpleDataFormat分析错误

Java Android SimpleDataFormat分析错误,java,android,Java,Android,我想解析这个字符串:Thu Jan 01 00:00:58 CET 1970 我使用这个模式:EEE-MMM-dd-hh:mm:ss-z-yyyy 但我有一个例外: java.text.ParseException:不可解析日期:“1970年1月1日星期四00:00:58 CET”(偏移量20处) 堆栈跟踪: java.text.ParseException:不可解析日期:“1970年1月1日星期四00:01:18 CET”(偏移量20处) W/System.err:at java.text.D

我想解析这个字符串:Thu Jan 01 00:00:58 CET 1970

我使用这个模式:EEE-MMM-dd-hh:mm:ss-z-yyyy

但我有一个例外: java.text.ParseException:不可解析日期:“1970年1月1日星期四00:00:58 CET”(偏移量20处)

堆栈跟踪:

java.text.ParseException:不可解析日期:“1970年1月1日星期四00:01:18 CET”(偏移量20处) W/System.err:at java.text.DateFormat.parse(DateFormat.java:571)

系统环境:android studio 2.0,编译DK23版,buildToolsVersion“23.0.3”
设备:HTC One M7,android 5.0.2

您应该创建一个测试用例并演示其行为。我是为你做的:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import org.junit.Test;

public class DateParseTest {

@Test
public void testDateFormat() {
    SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy", Locale.US);
    try {
        Date date = dateFormat.parse("Thu Jan 01 00:00:58 CET 1970");
        System.out.println("parsed date:" + date);
    } catch (ParseException ex) {
        ex.printStackTrace();
    }
  }    
}
使用显式区域设置locale.US。在本例中,匈牙利语是默认语言环境,您必须以匈牙利语格式解析日期字符串

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy", new Locale("HU"));
String dateString = "P máj. 01 01:00:58 CET 1970";
Date date = dateFormatHu.parse(dateString);

您应该创建一个测试用例,并演示其行为。我是为你做的:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import org.junit.Test;

public class DateParseTest {

@Test
public void testDateFormat() {
    SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy", Locale.US);
    try {
        Date date = dateFormat.parse("Thu Jan 01 00:00:58 CET 1970");
        System.out.println("parsed date:" + date);
    } catch (ParseException ex) {
        ex.printStackTrace();
    }
  }    
}
使用显式区域设置locale.US。在本例中,匈牙利语是默认语言环境,您必须以匈牙利语格式解析日期字符串

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy", new Locale("HU"));
String dateString = "P máj. 01 01:00:58 CET 1970";
Date date = dateFormatHu.parse(dateString);
请参考这篇文章

关于1970年1月1日的所有问题都进行了详细解释

请参考这篇文章


关于1970年1月1日的所有问题都进行了详细解释

我得到了parseexception,如我的问题帖子中的stacktrace和系统环境。在android emulator中,这是可行的,但在我的设备上,您的默认区域设置是什么?在单元测试中添加一条语句:Locale.getDefault()并查看它告诉您的内容。我的默认区域设置是hu_HUI got parseexception,就像我的问题帖子中的一样。在android emulator中,这是可行的,但在我的设备上,您的默认区域设置是什么?在单元测试中添加一条语句:Locale.getDefault(),看看它告诉你什么。我的默认语言环境是hu_hu你试过这个吗