我像这样从 Sqlite 获取时间戳:"timestamp" + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP );"这就是我获取日期的方式:2019-06-23 04:25:28 我正在转换以获取日期,我得到的是 18070 而不是 int dayString timestamp = cursor.getString(cursor.getColumnIndex(VentasContract.TIME_STAMP)); Log.d("TIEMPO",timestamp); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = sdf.parse(timestamp); long millis = date.getTime(); long days = (millis / (60*60*24*1000)); Log.d("DIA",String.valueOf(days)); // The value of TIEMPO is 2019-06-23 04:25:28 // The value of DIA is 18070我希望今天是“23”
2 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
博士
myResultSet.getObject( … , OffsetDateTime.class ).getDayOfMonth()
23
细节
将遗留java.sql.Timestamp
对象转换为现代java.time.Instant
对象,而不是隐式调用toString
.
Instant instant = myTimestamp.toInstant() ;
调整到您想要感知日期和时间的时区。也许这就是 UTC 本身。
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
提取一个月中的第几天。
int dom = odt.getDayOfMonth() ;
23
提示:可怕的java.sql.Timestamp
类在多年前已被 JDBC 4.2 取代。我们现在可以与数据库交换现代java.time对象。
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;
千万里不及你
TA贡献1784条经验 获得超9个赞
Date#getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数,由此 Date 对象表示。
这与本月的第几天完全不同。
您应该使用Calendar
class 或 switch 来使用 java 8 LocalDate
class of java.time
package。
添加回答
举报
0/150
提交
取消