当前位置: 首页 > 知识库问答 >
问题:

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

欧阳高昂
2023-03-14

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

The Value which i am passing is Thu Jan 1 17:45:00 UTC+0530 1970

但是我得到了一个如下所述的例外情况:

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

请指导我在我错过的地方实现逻辑。提前道谢。

共有1个答案

管炳
2023-03-14

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

static SimpleDateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);  // Not needed.

其次,dateformat#format(Date)方法采用Date对象。您将向它传递一个字符串。那是行不通的。这就是为什么你不需要上面的对象。不需要再次执行InputFormat.Parse(ParsedDate.ToString())

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

"EEE MMM dd HH:mm:ss 'UTC'z yyyy"

您需要在z之前用引号给出utc。或更一般的情况:

"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;
    }
 类似资料:
  • 我很抱歉,如果这是一个非常愚蠢的错误,但我似乎看不到它。当我尝试使用SimpleDateFormat以“yyyy-mm-dd't'hh:mm:ss.sssz”作为格式字符串来解析2012-08-28t21:52:57.020z时,出现了一个不可解析的日期异常。谁能给我指出问题所在。

  • 我试图找出如何在Kotlin中将转换为,这在Java中非常简单,但我在Kotlin中找不到任何等效的。 例如:历元时间戳(1970-01-01以来的秒数)== 在Kotlin中是否有解决方案,或者我是否必须在Kotln中使用Java语法?请给我一个简单的例子来说明如何解决这个问题。提前谢谢。 这个链接不是我问题的答案

  • 问题内容: 论坛成员 我在Java中遇到日期时间问题。实际上,我正在接收 格式为2012-02-27T01:10:10 的开始日期,并且我想将接收到的日期插入具有datetime数据类型的数据库中。 实际上,我尝试通过以下代码将收到的开始日期转换为日期时间 但是使用上面的代码,只有 日期被添加到我的数据库中,例如2012-02-27 00:00:00 我也想将时间添加到数据库中,但是当我将Simp

  • 问题内容: 我在来自Linux服务器的json中有一个时间戳。我想使用Java将其转换为简单的日期时间格式。 我需要以下格式的日期和时间:dd-mm-yyyy hh:mm:ss 这是我的JSON数据: 问题答案: 批处理日期 看起来像是从时代开始的几秒钟, 所以 然后使用SimpleDateFormat应该可以解决问题 -代码- -输出-

  • 问题内容: 如何在Java中将分钟从Unix时间戳转换为日期和时间。例如,时间戳1372339860对应于。 我想转换成。 编辑:其实我希望它是根据美国时间GMT-4,所以它将是。 问题答案: 你可以使用SimlpeDateFormat来格式化日期,如下所示: 如果使用的模式SimpleDateFormat非常灵活,则可以根据给定的特定模式,在javadocs中检入可用于产生不同格式的所有变体Da

  • 问题内容: 我尝试将其转换为java.sql.Timestamp后插入,并使用以下代码段: 但是,这是给我的 有没有办法在没有毫秒的情况下获得输出? 问题答案: 您可以使用来减少毫秒数: 输出: