【问题标题】:Android SimpleDateFormat parse errorAndroid SimpleDateFormat 解析错误
【发布时间】:2016-08-30 09:40:17
【问题描述】:

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

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

但我得到了这个例外: java.text.ParseException:无法解析的日期:“Thu Jan 01 00:00:58 CET 1970”(偏移量 20)

堆栈跟踪:

java.text.ParseException:无法解析的日期:“Thu Jan 01 00:01:18 CET 1970”(偏移量 20) W/System.err:在 java.text.DateFormat.parse(DateFormat.java:571)

系统环境:android studio 2.0,compileSdkVersion 23,buildToolsVersion "23.0.3" 设备:HTC One M7,安卓 5.0.2

【问题讨论】:

标签: java android


【解决方案1】:

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

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);

【讨论】:

  • 我在我的问题中遇到了 parseexception
  • 发布您的堆栈跟踪和系统环境。
  • 在 android 模拟器中这是有效的,但在我的设备上不是
  • 您的默认语言环境是什么?在你的单元测试中添加一个语句:Locale.getDefault() 看看它告诉你什么。
  • 我的默认语言环境是 hu_HU
【解决方案2】:

请参考此帖Java Date(0) is not 1/1/1970

详细解释了 1970 年 1 月 1 日这一日期的所有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    相关资源
    最近更新 更多