从毫秒开始错误的一天

我像这样从 Sqlite 获取时间戳:


"timestamp" + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP );"

这就是我获取日期的方式:2019-06-23 04:25:28 我正在转换以获取日期,我得到的是 18070 而不是 int day


String 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”


呼啦一阵风
浏览 102回答 2
2回答

慕虎7371278

博士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 ) ;

千万里不及你

Date#getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数,由此 Date 对象表示。这与本月的第几天完全不同。您应该使用Calendarclass 或 switch 来使用 java 8 LocalDateclass of java.timepackage。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java