我想将作为字符串传递给SimpleDateFormat对象的时间戳值转换为时间值,但它会引发不可解析的日期异常。
The Value which i am passing is Thu Jan 1 17:45:00 UTC+0530 1970Bur,我得到了一个例外,如下所述:
java.text.ParseException: Unparseable date: "Thu Jan 1 17:45:00 UTC+0530 1970"请查找我已实现的以下代码(不起作用):
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;
}如果我使用下面的代码,它对我很好(工作),但它是一个折旧函数的日期,我想避免。
@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;
}请指导我实现我错过的逻辑。提前谢谢。
发布于 2013-10-01 07:32:03
首先,您的第二个SimpleDateFormat对象根本不需要。你正在做额外的工作,这是不需要的。因此,删除这个变量:
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())。
现在,解析当前字符串的格式应该是:
"EEE MMM dd HH:mm:ss 'UTC'z yyyy"您需要在UTC之前,以引号形式给出z。或更一般的情况:
"EEE MMM dd HH:mm:ss zZ yyyy"所以,您的代码应该是:
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;
}https://stackoverflow.com/questions/19110230
复制相似问题