Android 如何以特定格式设置日期和时间

Android 如何以特定格式设置日期和时间,android,datetime,Android,Datetime,Usibg此代码我得到一个java.lang.IllegalArgumentException:DTSTART不能为空。此错误来自: 代码: Calendar calender = Calendar.getInstance(); ContentResolver cr = getContentResolver(); ContentValues values = new ContentValues();

Usibg此代码我得到一个
java.lang.IllegalArgumentException:DTSTART不能为空
。此错误来自:

代码:

Calendar calender = Calendar.getInstance();
                ContentResolver cr = getContentResolver();
                ContentValues values = new ContentValues();
                String eventTime="12:00:AM 11:59:PM";
                String[] time=eventTime.split(" ");
                String[] execttime=time[0].split(":");
                String eventStartDate="06 Feb 2014"+" " + execttime[0]+":"+execttime[1]+":00";
                long startDate=getDateCurrentMillis(eventStartDate);
                values.put(CalendarContract.Events.DTSTART,
                        startDate);
                Uri EVENTS_URI = Uri.parse(getCalendarUriBase(EventDetail.this)+ "events");

    public static long getDateCurrentMillis(String startDate) {

        SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",

        Locale.getDefault());

        sfd.setTimeZone(TimeZone.getTimeZone("UTC"));

        try {

            Date d = sfd.parse(startDate);

            return d.getTime();

        } catch (Exception e) {

            System.out.println("");

        }    
    return 0;
        }
试试这个:

DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, h:mm a");
String date = df.format(Calendar.getInstance().getTime());

问题发生在您的
getDateCurrentMillis
方法中。由于在
SimpleDataFormat
中指定的格式不正确,因此无法分析日期,这会导致始终返回0。在DTS中传递0将开始崩溃应用程序

看起来你的eventStartDate是这样的格式

String date = "06 Feb 2014 12:00:00";
SimpleDateFormat sfd = new SimpleDateFormat("dd MMM yyyy HH:mm:ss", Locale.getDefault());
因此,以如下方式创建SimpleDataFormat对象

String date = "06 Feb 2014 12:00:00";
SimpleDateFormat sfd = new SimpleDateFormat("dd MMM yyyy HH:mm:ss", Locale.getDefault());
让我知道我是否正确地观察了您的日期格式,如果没有在传递之前打印它,并在您的
SimpleDateFormat
对象中进行相应的更改,或者在评论中发布,我将进行必要的更改

 //to pick date 
  DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
        myCalendar.set(Calendar.YEAR, year);
        myCalendar.set(Calendar.MONTH, monthOfYear);
        myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
        updateLabel();
        }
        }



//to pick time

    TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            myCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
            myCalendar.set(Calendar.MINUTE, minute);
            updateLabel();
        }
        };
有关更多信息,请使用此链接


DateFormat df=新的简化格式(“EEE,d-MMM-yyyy,h:mm-a”);字符串date=df.format(Calendar.getInstance().getTime());如果我想将该事件添加到android日历中,从2月13日12:00:00 PM到2月18日01:00:00 PM,那么如何将其设置为插入android日历中的格式,您必须以毫秒为单位传递日期和时间,如图所示,以毫秒为单位进行转换我已经完成了,但我希望每天添加的事件都从12:00 PM到01:00 PMString发出警报startEventTime=UIUtils.getCurrentTime(时间[0]);字符串endEventTime=UIUtils.getCurrentTime(time[1]);字符串eventStartDate=eventSDate+“”+startEventTime;字符串eventEndDate=eventEDate+“”+endEventTime;long startDate=getDateCurrentMillis(eventStartDate);long-endDate=getDateCurrentMillis(eventEndDate);公共静态long getDateCurrentMillis(String startDate){//2013-10-24T01:00:00Z SimpleDateFormat sfd=new SimpleDateFormat(“dd-MMM-yyyy HH:mm:ss”,Locale.getDefault());sfd.setTimeZone(TimeZone.getTimeZone(“UTC”);try{Date d=sfd.parse(startDate);返回d.getTime();}catch(异常e){System.out.println(“”);}返回0;}