Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将字符串时间戳转换为java.sql.Timestamp?_Java_Datetime_Timestamp - Fatal编程技术网

如何将字符串时间戳转换为java.sql.Timestamp?

如何将字符串时间戳转换为java.sql.Timestamp?,java,datetime,timestamp,Java,Datetime,Timestamp,我有字符串格式的时间戳“Thu,2017年2月23日04:56:38 GMT”。那么,如何将这个字符串时间戳转换为“2017-02-23 04:56:38.0”格式呢。 我试过链接。但在转换过程中面临错误。 我的示例代码如下 String str = "Thu, 23 Feb 2017 04:56:38 GMT"; SimpleDateFormat sdf1 = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss a"); Date

我有字符串格式的时间戳“Thu,2017年2月23日04:56:38 GMT”。那么,如何将这个字符串时间戳转换为“2017-02-23 04:56:38.0”格式呢。 我试过链接。但在转换过程中面临错误。 我的示例代码如下

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:无法解析的日期:“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\u 1123\u DATE\u time
。因此,解析字符串是一行:

    Instant i = OffsetDateTime.parse(str, DateTimeFormatter.RFC_1123_DATE_TIME).toInstant();
既然您要求在标题中使用
java.sql.Timestamp
,我想您可能需要在数据库中使用它?现代JDBC驱动程序(版本4.2或更高版本)应该能够直接接受
实例。如果你没有那么幸运,那还是很容易的:

    Timestamp ts = Timestamp.from(i);
我正在使用
java.time
包中的一些类(带有子包
java.time.format
)。以上只是一个非常简单的例子,说明这些类比旧类
Timestamp
SimpleDateFormat
(我认为是来自Java1.0或1.1)对程序员更友好。每次使用示例时,我都会遇到它们(当然,当我回答有关堆栈溢出的问题时,也会遇到使用旧类时遇到的棘手错误)


java.time
在Java8中是标准的。如果您想使用Java 6或7中的类,请将它们放入。

>一个| Am/pm标记| Text | pm,因此您使用Am/pm标记解析时区…@Fildor,您是对的。在simpleDateformat中将a更改为z后,工作正常。谢谢你重复的问题。