10

我正在使用 Java (J2SE) 开发应用程序。
我需要在数据库中存储一个时间(例如 16:30:12)。
当我需要存储日期(或日期+时间)时,我将其转换为 Unix 时间戳并将其存储为Long数字。
但是当我只需要时间而不需要日期和时间时,存储它的最佳方式是什么?
我正在使用SQLiteMS Access作为 DBMS。

谢谢

4

3 回答 3

8

更好的方法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);
于 2016-01-13T09:38:47.000 回答
5

可以将时间存储为从空日期(1970 年 1 月 1 日,格林威治标准时间 00:00:00)开始的毫秒时间。您将能够轻松地对数据库中的这个长数据字段进行比较操作。

于 2011-12-05T11:05:23.927 回答
2

您可以正常存储String

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
String time = sdf.format(Calendar.getInstance());
于 2011-12-05T11:05:06.563 回答