【问题标题】:How to store time in MySQLMySQL如何存储时间
【发布时间】:2016-04-11 00:09:20
【问题描述】:

我有一个带有输入类型 =“时间”的表单的 html 页面。 此时间默认为 12 小时格式。

用户将选择时间,并将其存储在 MYSQL 数据库中。 在我的数据库中,我创建了一个名为“bookingTime”的表,其数据类型为 TIME。

我正在尝试编写java代码来将时间存储在数据库中。

问题是,当我在 HTML 页面上选择时间(例如 03.30 PM)时,后端接收到的时间为“1970-01-01T20:30:00.000Z”。

我无法解析这个并将实际时间(即 15:30:00)存储在 MYSQL 数据库中。

谁能给我java代码来做这个?

【问题讨论】:

  • 您在检索时是否遇到同样的问题?可能是,db 存储了与时区无关的值,但可能能够检索原始时区中的日期..
  • 您可以存储完整的日期/时间信息,例如只要在数据库中。这避免了与不同时区的混淆(在 DB 表中/在 java 中)。在后端,您可以使用 Calendar 将 long 解析为日期/时间
  • 您可能想将该输入类型更改为其他类型stackoverflow.com/questions/13523060/…

标签: java mysql html date time


【解决方案1】:

这里我使用的是您的字符串“1970-01-01T20:30:00.000Z”,但它应该替换为该表单中您预期的内容

DateFormat formatFromHtml =  new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
DateFormat formatterToMySQL =  new SimpleDateFormat("H:mm:ss");
Date result = formatFromHtml.parse("1970-01-01T20:30:00.000Z");
String validForTimeInMysql = formatterToMySQL.format(result);

之后,在validForTimeInMysql中你会得到一个可以添加到MySQL的字符串

【讨论】:

    【解决方案2】:

    您可以使用日历变量,这样您就可以创建一个新日历并设置时间。

    之后,使用 PreparedStatement 将时间设置为字符串,使用 SimpleDateFormat("HH:mm:ss")

    Calendar myCalendar = Calendar.getInstance();
    myCalendar.set(Calendar.HOUR, hour);
    myCalendar.set(Calendar.MINUTE, minute);
    myCalendar.set(Calendar.SECOND, second);
    
    SimpleDateFormat sdf =  new SimpleDateFormat("HH:mm:ss" );
    String time = sdf.format(  myCalendar.getTime() );   
    
    ...    
    ps.setString("myTimeField", time);
    

    【讨论】:

      猜你喜欢
      • 2012-12-27
      • 2017-02-15
      • 2010-12-06
      • 2016-01-07
      • 2015-07-02
      • 2016-08-24
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      相关资源
      最近更新 更多