为了账号安全,请及时绑定邮箱和手机立即绑定

java到mysql。我需要从字符串参数转换为时间戳

java到mysql。我需要从字符串参数转换为时间戳

小唯快跑啊 2022-01-19 17:05:40
我正在尝试将字符串解析为时间戳,因为我需要将此数据保存在 bbdd mysql 上。String dateString: "2018-10-17T22:37:10.000+0000";java.sql.Timestamp timeStampDate = null;try {        DateFormat formatter;        formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");        Date date = (Date) formatter.parse(dateString);        timeStampDate = new Timestamp(date.getTime());    } catch (ParseException e) {        log.debug("ERROR parser String to Timestamp to save bbdd. ", e.getMessage());    }当我运行我的应用程序时,我收到了这条消息:错误解析器字符串到时间戳以保存 bbdd。无法解析的日期:“2018-10-17T22:37:10.000+0000”有谁能够帮我?
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

改变你的面具


DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS");


所以你有了


java.sql.Timestamp timeStampDate = null;

String dateString = "2018-10-17T22:37:10.000+0000";


try {

    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

    Date date = formatter.parse(dateString);

    timeStampDate = new Timestamp(date.getTime());


} catch (ParseException e) {

    e.printStackTrace();

}

顺便说一句cast,你不应该需要Date


为我的懈怠道歉,我匆忙中没有测试输出,根据@andreas 评论,正确的掩码实际上是yyyy-MM-dd'T'HH:mm:ss.SSSZ


查看完整回答
反对 回复 2022-01-19
?
翻阅古今

TA贡献1780条经验 获得超5个赞

java.time

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSXX");

    String dateString = "2018-10-17T22:37:10.000+0000";

    OffsetDateTime odt = OffsetDateTime.parse(dateString, formatter);


    System.out.println("Parsed datetime: " + odt);

此代码的输出是:


解析日期时间:2018-10-17T22:37:10Z


为了保存到 MySQL 中,最好使用 datetime 对象,但是Timestamp该类存在设计问题并且现在已经过时了。很抱歉我没有使用 MySQL 的经验,但我认为以下应该可行:


    PreparedStatement ps = myDatabaseConnection.prepareStatement(

            "insert into my_table (my_timestamp) values (?)");

    ps.setObject(1, odt);


查看完整回答
反对 回复 2022-01-19
  • 2 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信