如何将字符串时间戳转换为java。sql。时间戳?[英] How to convert String time stamp to java.sql.Timestamp?

问题描述

我有字符串格式的时间戳为" THU,2017年2月23日04:56:38 GMT".因此,如何将此字符串时间戳转换为" 2017-02-23 04:56:38.0"格式. 我尝试了链接 java以字符串格式以timestamp的形式转换为.但是面临转换错误. 我的示例代码如下.

String str = "Thu, 23 Feb 2017 04:56:38 GMT";


    SimpleDateFormat sdf1 = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss a");
    Date date = null;
    try {
        date = (Date) sdf1.parse(str);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println("Date Object:" + date);
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println("Formatted Date:" + sdf2.format(date));

错误:java.text.parseexception:无可避免的日期:" THU,2017年2月23日04:56:38 GMT" 在java.text.dateformat.parse(dateformat.java:366)

推荐答案

只需更改SDF1格式

SimpleDateFormat sdf1 = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z");

在这里z表示

Date or Time Component  Presentation        Examples
Time zone               General time zone   Pacific Standard Time; PST; GMT-08:00

其他推荐答案

我知道您现在已经工作了.请允许我提及:您的格式为java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME.因此,解析字符串是一个单线:

    Instant i = OffsetDateTime.parse(str, DateTimeFormatter.RFC_1123_DATE_TIME).toInstant();

由于您在标题中要求A java.sql.Timestamp,所以我认为您可能需要这个数据库?现代JDBC驱动程序(4.2版或更新版本)应该能够直接接受Instance.如果您不是那么幸运,那还是很容易的:

    Timestamp ts = Timestamp.from(i);

我正在使用java.time软件包中的一些类(带有子包java.time.format).以上只是一个非常简单的示例,即与旧类Timestamp和SimpleDateFormat(我认为来自Java 1.0或1.1)更适合程序员友好.每次使用它们时,我都会继续开会示例(当然,当我在使用旧类中回答有关棘手错误的堆栈溢出时.

).

java.time是Java 8中的标准配置.如果要使用Java 6或7中的类Noreferrer"> Threeten Backport .

本文地址:https://www.itbaoku.cn/post/978647.html