java从millis获取错误的整数天
我从Sqlite获得的时间戳如下:
"timestamp" + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP );"
这是我获取日期的方式:2019-06-23 04:25:28
我正在转变,以获得这些日子
我得到的是18070而不是整数日
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”
# 1 楼答案
Date#getTime()返回此日期对象表示的自1970年1月1日00:00:00 GMT以来的毫秒数
这与一个月中的某一天大不相同
您应该使用
Calendar
类或开关来使用java.time
包的Java8LocalDate
类# 2 楼答案
tl;博士
细节
将旧的
java.sql.Timestamp
对象转换为现代的java.time.Instant
对象,而不是隐式调用toString
调整到您想要感知日期和时间的时区。也许这就是UTC本身
提取月份的日期
提示:可怕的
java.sql.Timestamp
类在几年前被JDBC4.2取代。我们现在可以交换现代java了。数据库中的时间对象