Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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 将Twitter4J日期转换为SQL日期_Java_Sql_Datetime Format_Java.util.date - Fatal编程技术网

Java 将Twitter4J日期转换为SQL日期

Java 将Twitter4J日期转换为SQL日期,java,sql,datetime-format,java.util.date,Java,Sql,Datetime Format,Java.util.date,我有来自Twitter API的日期格式:2017年10月11日星期三17:30:20 CEST 在Java SQL中,我需要这个日期格式:2017-10-11 17:30:20 如何转换日期格式,以便能够插入到数据库中 这是我的代码: Date createdAt = message.getCreatedAt(); 好的,似乎getCreatedAt()方法返回一个java.util.Date对象,因此如果您需要实例化java.sql.Date实例以保存在数据库中,您只需执行以下操作: Da

我有来自Twitter API的日期格式:2017年10月11日星期三17:30:20 CEST

在Java SQL中,我需要这个日期格式:2017-10-11 17:30:20

如何转换日期格式,以便能够插入到数据库中

这是我的代码:

Date createdAt = message.getCreatedAt();

好的,似乎
getCreatedAt()
方法返回一个
java.util.Date
对象,因此如果您需要实例化
java.sql.Date
实例以保存在数据库中,您只需执行以下操作:

Date createdAt = message.getCreatedAt();
java.sql.Date sqlCreatedAt = new java.sql.Date(createdAt.getTime())

看来
getCreatedAt()
方法返回一个
java.util.Date
对象,因此如果需要实例化
java.sql.Date
实例以保存在数据库中,您可以简单地执行以下操作:

Date createdAt = message.getCreatedAt();
java.sql.Date sqlCreatedAt = new java.sql.Date(createdAt.getTime())

tl;博士 使用对象,而不是字符串

myPreparedStatement.setObject( 
    … , 
    ZonedDateTime.parse( 
        "Wed Oct 11 17:30:20 CEST 2017" , 
        DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss z uuuu" , Locale.US ) 
    ).toInstant() 
)
java.time 使用JDBC4.2及更高版本,您可以直接与数据库交换java.time对象不需要只处理字符串也不需要处理麻烦的旧式日期时间类,如
java.sql.date
/
java.sql.Timestamp

为输入定义格式模式。指定
区域设置
,以指示翻译日期名称和月份名称所需的人类语言

String input = "Wed Oct 11 17:30:20 CEST 2017";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss z uuuu" , Locale.US );
将输入解析为包含时区提示的给定值。请注意,您的
CEST
实际上不是一个时区,但是
ZonedDateTime
将对解释进行猜测。这种3-4个字母的伪区域给出了关于时区的提示,但没有标准化,甚至不是唯一的(!)。这与输入字符串的其余部分一起,是一种糟糕的日期时间格式选择。尽可能使用标准格式

大陆/地区
的格式指定,例如,或
太平洋/奥克兰

ZonedDateTime zdt = ZonedDateTime.parse( input , f );
通常最好在UTC工作。提取一个
即时
对象。该类表示时间线上的一个时刻,分辨率为(小数点的九(9)位)

通过支持JDBC 4.2或更高版本将其传递到数据库

myPreparedStatement.setObject( … , instant ) ;
检索:

Instant instant = myResultSet.getObject( … , Instant.class ) ;
如果数据库列的类型为不带时区的
时间戳
而不是带时区的
时间戳
,请使用
LocalDateTime
对象而不是
ZoneDateTime
/
Instant
。一个物体没有任何概念或概念

遗留
java.util.Date
如果您的Twitter调用实际返回的是
java.util.Date
对象而不是字符串,请转换为Instant,并按照上面所示的步骤进行测试

Instant instant = myJavaUtilDate.toInstant() ;  // Convert from troublesome legacy `Date` class to modern `Instant` class.

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

从哪里获得java.time类

  • ,及以后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类
    • 对于早期的Android,该项目采用了ThreeTen Backport(如上所述)。看
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、和。

tl;博士 使用对象,而不是字符串

myPreparedStatement.setObject( 
    … , 
    ZonedDateTime.parse( 
        "Wed Oct 11 17:30:20 CEST 2017" , 
        DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss z uuuu" , Locale.US ) 
    ).toInstant() 
)
java.time 使用JDBC4.2及更高版本,您可以直接与数据库交换java.time对象不需要只处理字符串也不需要处理麻烦的旧式日期时间类,如
java.sql.date
/
java.sql.Timestamp

为输入定义格式模式。指定
区域设置
,以指示翻译日期名称和月份名称所需的人类语言

String input = "Wed Oct 11 17:30:20 CEST 2017";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss z uuuu" , Locale.US );
将输入解析为包含时区提示的给定值。请注意,您的
CEST
实际上不是一个时区,但是
ZonedDateTime
将对解释进行猜测。这种3-4个字母的伪区域给出了关于时区的提示,但没有标准化,甚至不是唯一的(!)。这与输入字符串的其余部分一起,是一种糟糕的日期时间格式选择。尽可能使用标准格式

大陆/地区
的格式指定,例如,或
太平洋/奥克兰

ZonedDateTime zdt = ZonedDateTime.parse( input , f );
通常最好在UTC工作。提取一个
即时
对象。该类表示时间线上的一个时刻,分辨率为(小数点的九(9)位)

通过支持JDBC 4.2或更高版本将其传递到数据库

myPreparedStatement.setObject( … , instant ) ;
检索:

Instant instant = myResultSet.getObject( … , Instant.class ) ;
如果数据库列的类型为不带时区的
时间戳
而不是带时区的
时间戳
,请使用
LocalDateTime
对象而不是
ZoneDateTime
/
Instant
。一个物体没有任何概念或概念

遗留
java.util.Date
如果您的Twitter调用实际返回的是
java.util.Date
对象而不是字符串,请转换为Instant,并按照上面所示的步骤进行测试

Instant instant = myJavaUtilDate.toInstant() ;  // Convert from troublesome legacy `Date` class to modern `Instant` class.

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

从哪里获得java.time类

  • ,及以后
    • 内置的
    • 标准Java API的一部分,带有捆绑实现