所以,我已经尝试了很长时间了。我需要将日期和时间保存为(DD-MM-YYYY & HH:mm)
数据库中的字符串SQLite
。
现在我必须设置我的AlarmManager
来显示通知,但是AlarmManager会以毫秒为单位获取时间和日期。
如何将这些转换为毫秒?
在SQLite DB
中存储日期和时间的正确方法是什么?
答案 0 :(得分:2)
在sqlite中存储日期和时间的正确方法是什么?
您最终可能会发现在SQLite数据库中使用SQLite' INTEGER
数据类型将日期存储为毫秒更容易。这使得使用该值非常容易创建Calendar
个对象或在创建AlarmManager
警报时使用它。但是如果在数据库中以字符串格式存储日期,您可能会发现自己正在对其执行字符串操作。
如果您将日期存储为数据库中的毫秒数,则可以非常轻松地从中创建日历对象并提取年,月和日:
// get millis from database
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(millis);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
对于存储时间,我发现最好将它们存储为" HH:MM"中的24小时字符串。格式。 Android的TimePickers以24小时格式接受和返回小时数,因此这简化了生活。
你仍然需要做一些最小的字符串操作来从" HH:MM"获得int
小时和分钟,但它可以很简单:
String timeString = "18:30";
int hours = Integer.valueOf(timeString.split(":")[0]);
int minutes = Integer.valueOf(timeString.split(":")[1]);
但如果您愿意,您甚至可以将您的时间存储在毫秒中作为SQLite INTEGER
,然后使用该值创建新的Calendar
对象并从中提取小时和分钟:< / p>
// get millis from database
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(millis);
int hours = cal.get(Calendar.HOUR_OF_DAY);
int minutes = cal.get(Calendar.MINUTES);
答案 1 :(得分:1)
您可以使用SimpleDateFormat执行此操作:
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy HH:mm");
String time = "12-01-2014 10:23";
long millis = format.parse(time).getTime();
这应该有效。我也有这样的东西,我设置了一个额外的列,我从数据库中的这个日期保存毫秒,所以我可以直接得到它。