在java中处理MySQL时间戳

问题描述 投票:1回答:2

我正在使用Retrofit将我的Android应用程序连接到数据库并获取这样的JSON对象

{
"id":1,
"title":"clean room",
"description":"clean my room",
"isVisible":true,
"status":1,
"createTimestamp": {"date":"2015-05-08 13:44:03.000000","timezone_type":3,"timezone":"Europe\/Berlin"},
"updateTimestamp":null,
"user_id":1,"category_id":1
}

我还有一个带有这些属性的Java类广告。 createTimestamp在MySQL中设置为TIMESTAMP

@SerializedName("createTimestamp")
@Expose
private Timestamp createTimestamp;

Java给了我一个错误,像这样:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT

如果我正在创建一个具有给定属性timezone_type,date,timezone,....的新类TimestampObject,并将我的Advert类中的createTimestamp属性设置为私有TimestampObject它可以工作,但我必须将日期从String转换为int值才能生成新的日期或日历对象。我也没弄清楚如何使用值timezone_type和timezone。有没有办法获取JSON对象createTimestamp并将其保存为Java中的时间戳?

java android mysql json
2个回答
0
投票

躲开它。主要是因为我不确定Timestamp对象是否可以序列化。创建您正在引用的TimestampObject,然后继续。


0
投票

从MySql获取日期。请在下面找到示例。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class GetDateFromMySql {
  public static Connection getMySQLConnection() throws Exception {
    String driver = "org.gjt.mm.mysql.Driver";
    String url = "jdbc:mysql://localhost/databaseName";
    String username = "root";
    String password = "root";
    Class.forName(driver);
    return DriverManager.getConnection(url, username, password);
  }

  public static void main(String args[]) {
    ResultSet rs = null;
    Connection conn = null;
    Statement stmt = null;
    try {
      conn = getMySQLConnection();
      stmt = conn.createStatement();
      rs = stmt.executeQuery("select timeCol, dateCol, dateTimeCol from dateTimeTable");
      while (rs.next()) {
        java.sql.Time dbSqlTime = rs.getTime(1);
        java.sql.Date dbSqlDate = rs.getDate(2);
        java.sql.Timestamp dbSqlTimestamp = rs.getTimestamp(3);
        System.out.println("dbSqlTime=" + dbSqlTime);
        System.out.println("dbSqlDate=" + dbSqlDate);
        System.out.println("dbSqlTimestamp=" + dbSqlTimestamp);

        java.util.Date dbSqlTimeConverted = new java.util.Date(dbSqlTime.getTime());
        java.util.Date dbSqlDateConverted = new java.util.Date(dbSqlDate.getTime());
        System.out.println("in standard date");
        System.out.println(dbSqlTimeConverted);
        System.out.println(dbSqlDateConverted);
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        rs.close();
        stmt.close();
        conn.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.