首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.text.ParseException:在java中将时间戳值转换为时间的不可解析日期异常

java.text.ParseException:在java中将时间戳值转换为时间的不可解析日期异常
EN

Stack Overflow用户
提问于 2013-10-01 07:18:06
回答 2查看 3.5K关注 0票数 2

我想将作为字符串传递给SimpleDateFormat对象的时间戳值转换为时间值,但它会引发不可解析的日期异常。

代码语言:javascript
运行
复制
The Value which i am passing is Thu Jan 1 17:45:00 UTC+0530 1970

Bur,我得到了一个例外,如下所述:

代码语言:javascript
运行
复制
java.text.ParseException: Unparseable date: "Thu Jan 1 17:45:00 UTC+0530 1970"

请查找我已实现的以下代码(不起作用):

代码语言:javascript
运行
复制
static SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
static SimpleDateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
static SimpleDateFormat outputFormatTime = new SimpleDateFormat("HH:mm:ss");

public static String convertUtcDateStringToTime(String utcDateValue) throws Exception
    {
        Date parsedDate = dateFormat.parse(utcDateValue);
        String returnDate=outputFormatTime.format(inputFormat.parse(parsedDate.toString()));
        return returnDate;
    }

如果我使用下面的代码,它对我很好(工作),但它是一个折旧函数的日期,我想避免。

代码语言:javascript
运行
复制
@SuppressWarnings("deprecation")
public static String convertUtcDateStringToTime(String utcDateValue) throws Exception
{
    Date dateValue=new Date(utcDateValue);
    Date parsedDate = dateFormat.parse(dateValue.toString());
    String returnDate=outputFormatTime.format(inputFormat.parse(parsedDate.toString()));
    return returnDate;
}

请指导我实现我错过的逻辑。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-01 07:32:03

首先,您的第二个SimpleDateFormat对象根本不需要。你正在做额外的工作,这是不需要的。因此,删除这个变量:

代码语言:javascript
运行
复制
static SimpleDateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);  // Not needed.

其次,DateFormat#format(Date)方法接受一个Date对象。你在给它传递一个String。那是行不通的。这就是为什么你不需要上面的对象。没有必要再次执行inputFormat.parse(parsedDate.toString())

现在,解析当前字符串的格式应该是:

代码语言:javascript
运行
复制
"EEE MMM dd HH:mm:ss 'UTC'z yyyy"

您需要在UTC之前,以引号形式给出z。或更一般的情况:

代码语言:javascript
运行
复制
"EEE MMM dd HH:mm:ss zZ yyyy"

所以,您的代码应该是:

代码语言:javascript
运行
复制
static SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zZ yyyy", Locale.US);
static SimpleDateFormat outputFormatTime = new SimpleDateFormat("HH:mm:ss");

public static String convertUtcDateStringToTime(String utcDateValue) throws Exception
    {
        Date parsedDate = dateFormat.parse(utcDateValue);
        String returnDate=outputFormatTime.format(inputFormat);
        return returnDate;
    }
票数 2
EN

Stack Overflow用户

发布于 2013-10-01 07:35:47

您输入的dateformat需要是

代码语言:javascript
运行
复制
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zZ yyyy", Locale.US);

另一种格式是完全一致的,您是基于您的需求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19110230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档