我正在使用 Java (J2SE) 开发应用程序。
我需要在数据库中存储一个时间(例如 16:30:12)。
当我需要存储日期(或日期+时间)时,我将其转换为 Unix 时间戳并将其存储为Long
数字。
但是当我只需要时间而不需要日期和时间时,存储它的最佳方式是什么?
我正在使用SQLite
和MS Access
作为 DBMS。
谢谢
我正在使用 Java (J2SE) 开发应用程序。
我需要在数据库中存储一个时间(例如 16:30:12)。
当我需要存储日期(或日期+时间)时,我将其转换为 Unix 时间戳并将其存储为Long
数字。
但是当我只需要时间而不需要日期和时间时,存储它的最佳方式是什么?
我正在使用SQLite
和MS Access
作为 DBMS。
谢谢
更好的方法Java 8
,或者通过Joda-Time
在早期版本中使用库:
使用LocalTime
该类并提取自午夜以来的秒数。您可以将其作为 a 存储three bytes number (0 to 86399)
在您的数据库中(而不是八字节的日期时间)。
https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html
LocalTime time = LocalTime.parse("12:34:45");
int secondOfDay = time.toSecondOfDay();
// Save to database
扭转:
// Get from database
LocalTime time = LocalTime.ofSecondOfDay(secondOfDay);
可以将时间存储为从空日期(1970 年 1 月 1 日,格林威治标准时间 00:00:00)开始的毫秒时间。您将能够轻松地对数据库中的这个长数据字段进行比较操作。
您可以正常存储String
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
String time = sdf.format(Calendar.getInstance());