我目前正在尝试在android中创建一个警报应用程序,作为我课程的一部分。目前,所有内容都与日期和时间检查数据库中的内容有关。
在我的" AlarmCheckDateAndTime中,我需要帮助
将当前日期与所有日期进行比较
在与日期相同的记录中比较当前时间与时间
我想要这样做的方式是有两个" if"该类文件中的语句。一个将进行日期检查的,并在其中进行时间检查。有人有可能给我一些帮助吗?
我的AlarmCheckDateAndTime类文件
inject.js
我的UserInputAlarmData类文件
public class AlarmCheckDateAndTime{
DatabaseHandler dbHandler;
public static void main (String[] args){
Date ThisDate = Calendar.getInstance().getTime();
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String DateChecker = formatter.format(ThisDate);
Date ThisTime = Calendar.getInstance().getTime();
SimpleDateFormat timeformatter = new SimpleDateFormat("hh:mm");
String TimeChecker = formatter.format(ThisTime);
}
}
我的DatabaseHandler类
public class UserInputAlarmData {
private int _id;
private String _title, _date, _time, _song;
public UserInputAlarmData (int id, String title, String date, String time, String song){
_id = id;
_title = title;
_date = date;
_time = time;
_song = song;
}
public String get_title() {
return _title;
}
public String get_date() {
return _date;
}
public String get_time() {
return _time;
}
public String get_song() {
return _song;
}
public int getId() {return _id;}
public String getTitle() {return _title;}
public String getDate() {return _date;}
public String getTime() {return _time;}
public String getSong() {return _song;}
}
如果您需要查看任何其他类文件,我可以提供它们。
非常感谢你提前帮助
答案 0 :(得分:0)
现在,当您想将日期插入数据库时,可以使用此代码。
从日期到字符串。
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
try {
Date date = new Date();
String datetime = dateFormat.format(date); // this date & time you can store in database as a string
System.out.println("Current Date Time : " + datetime);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
在数据库中插入字符串' date'
sqlite中的日期格式应为以下格式:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD
有关详细信息,请查看here
将日期作为字符串保存到数据库后,如果您尝试将其恢复,则会获得字符串日期。
因此,使用id检索特定的字符串数据。现在您有一个字符串类型的日期。所以再次转换为日期
从字符串到日期
String dtStart = "2010-10-15T09:27:37"; // example this is your string date
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
try {
Date dbDate = format.parse(dtStart); // database date in date format
System.out.println(dbDate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
进入日期比较,你可以比较日期和时间。只在一次的时间。所以现在你有两个约会。一个是您当前的系统日期,另一个是您的数据库日期。所以使用以下方法比较两者。
public static Boolean diff( Date date1,
Date date2 )
{
Calendar c1 = Calendar.getInstance(); // your current date
Calendar c2 = Calendar.getInstance(); // your database date
c1.setTime( date1 );
c2.setTime( date2 );
if( c1.before( c2 ) )
{
return true; // database date is after the current date
}
else if( c2.before( c1 ) )
{
return false; // database date is before the current date
}
}
此处Date1是您当前的日期,Date2是您的数据库日期。
通过将这两个日期传递给上述方法,您将获得一个布尔值true / false,它将告知当前日期和数据库日期之间是否存在任何差异。
如果要检查数据库中的所有日期,则可以使用此方法从数据库中获取UserInputAlarmData列表。
public List<UserInputAlarmData> getAllAlarmData() {
List<UserInputAlarmData> AlarmDatas = new ArrayList<UserInputAlarmData>();
SQLiteDatabase db = getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + DATABASE_TABLE, null);
if (cursor.moveToFirst()) {
do {
UserInputAlarmData AlarmData = new UserInputAlarmData(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4));
AlarmDatas.add(AlarmData);
}
while (cursor.moveToNext());
}
return AlarmDatas;
}
获取列表后,您可以循环并根据列表大小逐个检查日期。
希望它会帮助你
答案 1 :(得分:0)
这取决于您存储日期的方式。
您可以使用
使用日历格式。
Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(getYourMillisFromTheDBInHere);
//现在你可以比较字段
cal.get(Calendar.FIELDNAME)
//请注意,月份以0
开头,因此二月份为1
。
如果您只是想比较纯时间which is before which
,您可以使用:
milliseconds
并简单地将这些值与&lt; (少于)
使用Date
课程并致电after()
或before()
如果您将值存储为毫秒或YYYY/MM/DD HH:mm:ss
,您还可以在ORDER BY YOURTABLEROWWHICHINCLUDESTHEDATES ASC
- 查询中添加SQL
。