我有一个日期格式的字符串,我想在日期对象中解析。我想在日历对象中将时间设置为字符串,并希望同时设置警报。
为此我尝试将字符串解析为日期但没有任何反应。没有设定时间剂量。
当我进行调试以检查时间是否在日历中设置时,发现它在解析后直接在方法结束时进行。
Date date = df.parse(alertDateTest);
我尝试用这种格式解析字符串:
SimpleDateFormat df = new SimpleDateFormat("d MMM yyyy");
但是它给出了无效的格式异常。我应该使用哪种格式来解析这个字符串?
字符串格式为:d MMM yyyy
代码:
mAlertDate是2016年4月25日 alertDateTest是2016年4月25日
public void updateNotification() {
try {
String alertDateTest = i.getStringExtra("taskAlertDate");
String alertTimeTest = i.getStringExtra("taskAlertTime");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(alertDateTest);
if (alertDateTest.equals(mAlertDate)) {
String formattedString = date.toString();
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, mHourOfTheDay);
c.set(Calendar.MINUTE, mMinute);
c.set(Calendar.SECOND, 0);
mYear = new DateTime(formattedString).getYear();
mMonth = new DateTime(formattedString).getMonthOfYear();
mDayOfMonth = new DateTime(formattedString).getDayOfMonth();
c.set(Calendar.YEAR, mYear);
c.set(Calendar.MONTH, mMonth);
c.set(Calendar.DAY_OF_MONTH, mDayOfMonth);
date = c.getTime();
Log.d("AlertDate", String.valueOf(date));
Toast.makeText(AddTaskActivity.this, String.valueOf(date), Toast.LENGTH_SHORT).show();
intent = new Intent(AddTaskActivity.this, NotificationReceiver.class);
pendingIntent = PendingIntent.getBroadcast(getBaseContext(), _mId, intent, 0);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, date.getTime(), pendingIntent);
} catch (ParseException e) {
}
}
编辑:
我有一个函数onDateSet的日期选择器,我有一个字符串格式,字符串格式化为相同的格式:
@Override
public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
// String date = "You picked the following date: "+dayOfMonth+"/"+(++monthOfYear)+"/"+year;
SimpleDateFormat df = new SimpleDateFormat("d MMM yyyy");
mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.YEAR, year);
mCalendar.set(Calendar.MONTH, monthOfYear);
mCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
Date date = mCalendar.getTime();
if(DATE_PICKER_TAG == 1)
{
mYear = year;
mMonth = monthOfYear;
mDayOfMonth = dayOfMonth;
mAlertDate = df.format(date);
alertDate.setText(String.valueOf(mAlertDate));
}
if(DATE_PICKER_TAG == 3) {
mDueDate = df.format(date);
dueDate.setText(String.valueOf(mDueDate));
}
}
编辑:尝试你的答案Umesh Saraswat
String alertDateTest = i.getStringExtra("taskAlertDate");
String alertTimeTest = i.getStringExtra("taskAlertTime");
SimpleDateFormat simpleDateFormate = new SimpleDateFormat("dd MMM yyyy");
Date date = simpleDateFormate.parse(alertDateTest);
// Date date = df.parse(alertDateTest);
if (alertDateTest.equals(mAlertDate)) {
String formattedString = date.toString();
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, mHourOfTheDay);
c.set(Calendar.MINUTE, mMinute);
c.set(Calendar.SECOND, 0);
c.setTime(date);
c.set(Calendar.YEAR, mYear);
c.set(Calendar.MONTH, mMonth);
c.set(Calendar.DAY_OF_MONTH, mDayOfMonth);
date = c.getTime();
我得到的日期是12月31日。字符串是2016年4月26日。时间没有设定。
谢谢..
答案 0 :(得分:1)
使用25 Apr 2016
使用dd MMM yyyy
字符串格式解析日期字符串。
有关详细信息,请访问SimpleDateFormat
答案 1 :(得分:1)
您可以使用“dd MMM yyyy”或“d MMM yyyy”
答案 2 :(得分:1)
我理解你的问题,
有一个日期格式的字符串,我想在日期对象中解析。 对于第一个需要将字符串日期解析为日期格式化
byte[] buff = client.DownloadData(sFilePath);
我想在日历对象中将时间设置为字符串,并希望设置一个 同时发出警报。
SimpleDateFormate simpleDateFormate = new SimpleDateFormate("dd MMM yyyy");
Date date = simpleDateFormate.parse("Your date");
如果要将Calendar对象日期用于String formate,那么
Calendar c = Calendar.getInstance();
calendar.setTime(date)
c.set(Calendar.HOUR_OF_DAY, mHourOfTheDay);
c.set(Calendar.MINUTE, mMinute);
c.set(Calendar.SECOND, 0);
答案 3 :(得分:0)
刚刚将Locale添加到格式中并且有效..
SimpleDateFormat simpleDateFormate = new SimpleDateFormat(" dd MMM yyyy",Locale.ENGLISH);
谢谢大家..