从SQLite数据库中获取日期和时间字符串并设置AlarmManager

时间:2014-06-24 06:52:43

标签: android sqlite date android-alarms

所以,我已经尝试了很长时间了。我需要将日期和时间保存为(DD-MM-YYYY & HH:mm)数据库中的字符串SQLite

现在我必须设置我的AlarmManager来显示通知,但是AlarmManager会以毫秒为单位获取时间和日期。

如何将这些转换为毫秒?

SQLite DB中存储日期和时间的正确方法是什么?

2 个答案:

答案 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();

这应该有效。我也有这样的东西,我设置了一个额外的列,我从数据库中的这个日期保存毫秒,所以我可以直接得到它。