【问题标题】:How to get the start time and end time from calendar events in android?如何从android中的日历事件中获取开始时间和结束时间?
【发布时间】:2013-12-10 00:40:24
【问题描述】:

我想在android中获取日历事件的开始时间和结束时间?如何实现?

这是我的代码,

public static void readCalendarEvent(Context context) throws ParseException {
        ContentResolver contentResolver = context.getContentResolver();
        Calendar calendar = Calendar.getInstance();
        String dtstart = "dtstart";
        String dtend = "dtend";


        SimpleDateFormat    displayFormatter = new SimpleDateFormat("  MMMM dd, yyyy (EEEE)");

         stime=displayFormatter.format(calendar.getTime());     

        SimpleDateFormat startFormatter = new SimpleDateFormat("MM/dd/yy");
        String dateString = startFormatter.format(calendar.getTime());

        long after = calendar.getTimeInMillis();
        SimpleDateFormat formatterr = new SimpleDateFormat("hh:mm:ss MM/dd/yy");
        Calendar endOfDay = Calendar.getInstance();
        Date dateCCC = formatterr.parse("47:59:59 " + dateString);
        endOfDay.setTime(dateCCC);



        cursor = contentResolver.query(Uri.parse("content://com.android.calendar/events"), (new String[] { "calendar_id", "title", "description", "dtstart", "dtend", "eventLocation" }), "(" + dtstart + ">" + after + " and " + dtend + "<" + endOfDay.getTimeInMillis() + ")", null, "dtstart ASC");
        gCalendar = new ArrayList<GoogleCalendar>();
        try {
            System.out.println("Count=" + cursor.getCount());

            if (cursor.getCount() > 0) {

                System.out.println("the control is just inside of the cursor.count loop");
                while (cursor.moveToNext()) {
                    GoogleCalendar googleCalendar = new GoogleCalendar();
                    gCalendar.add(googleCalendar);
                    int calendar_id = cursor.getInt(0);
                    googleCalendar.setCalendar_id(calendar_id);
                    String title = cursor.getString(1);
                    googleCalendar.setTitle(title);
                    String description = cursor.getString(2);
                    googleCalendar.setDescription(description);
                    String dtstart1 = cursor.getString(3);
                    googleCalendar.setDtstart(dtstart1);                    
                    System.out.println("Starting date is :" +dtstart1);
                    String dtend1 = cursor.getString(4);
                    googleCalendar.setDtend(dtend1);
                    String eventlocation = cursor.getString(5);
                    googleCalendar.setEventlocation(eventlocation);
                }
            }
        } catch (AssertionError ex) {
            ex.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

代码运行正常,但是我想从这段代码中获取开始时间结束时间。我可以实现吗?

【问题讨论】:

  • 我得到这样的结束日期(结束日期是:-1881036608)
  • 开始和结束时间是什么意思?你有它们的字符串表示形式。

标签: android events android-calendar


【解决方案1】:

Android 的日历事件以毫秒为单位提供从时间纪元(1970 年 1 月 1 日)算起的开始或结束日期。所以我从某人那里复制了一个代码片段,以将毫秒转换为日期和时间。功能是

public static String getDate(long milliSeconds) {
            SimpleDateFormat formatter = new SimpleDateFormat(
                    "dd/MM/yyyy hh:mm:ss a");
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(milliSeconds);
            return formatter.format(calendar.getTime());


}

然后我这样调用它来获取我正在实施的日期时间值

Log.d("start date", getDate(Long.parseLong(cursor.getString(4))));

希望这会有所帮助。

【讨论】:

【解决方案2】:
String currentDateTimeString = java.text.SimpleDateFormat.getDateTimeInstance().format(new Date());
StartDate.setText(currentDateTimeString);
String current = java.text.SimpleDateFormat.getDateTimeInstance().format(new Date());
EndDate.setText(current);

【讨论】:

  • 请添加解释!
猜你喜欢
  • 2021-09-06
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多