我正在使用Java(J2SE)开发一个应用程序
我需要在数据库中存储一个时间(例如16:30:12)
当我需要存储日期(或日期+时间)时,我将其转换为Unix时间戳,并将其存储为Long
数字。
但是,当我只需要时间而不是日期和时间时,最好的存储方式是什么?
我正在使用SQLite
和MS Access
作为DBMS。
由于
答案 0 :(得分:5)
自Java 8
以来更好的方法,或者在早期版本中使用Joda-Time
库:
使用LocalTime
类并提取自午夜以来的秒数。您可以将其存储为数据库中的three bytes number (0 to 86399)
(而不是8字节的日期时间)。
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);
答案 1 :(得分:3)
可以将时间存储为null-date(1970年1月1日,格林威治标准时间00:00:00)的时间 - 毫秒。 您可以轻松地在DB中的这个长数据字段上进行比较操作。
答案 2 :(得分:1)
您可以将其存储为正常String
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
String time = sdf.format(Calendar.getInstance());