Android日历视图:如何以正确的格式获取日期?

3
这几天我一直在寻找从Android 4.0的calendarview中获取“可读”日期的方法。我找不到适合我的问题的解决方案或示例。我已经用毫秒数得到了日期,但没有以日期格式显示。
我的问题是:我有一个日历视图,并且我想要用户选择的日期以yy-mm-dd的日期格式在logcat中显示。
我习惯了android 2.2的datepicker,并不熟悉calendarview,也找不到很多关于它的资料。有人知道解决方法吗?
4个回答

6

好的,这是如何进行操作。当您启动您的日历视图活动或者在您的活动中嵌入一个日历视图时,它会将日期设置为当前日期(即今天)。要获取当前日期,只需使用 Java API 提供的 Calendar 对象即可获取此日期,以下是示例:

Calendar date = Calendar.getInstance();
// for your date format use
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd");
// set a string to format your current date
String curDate = sdf.format(date.getTime());
// print the date in your log cat
Log.d("CUR_DATE", curDate);

要更改日期,您必须执行以下操作。
CalendarView myCalendar = (CalendarView) findViewById(R.id.myCalenderid);

myCalendar.setOnDateChangeListener(myCalendarListener);

OnDateChangeListener myCalendarListener = new OnDateChangeListener(){

public void onSelectedDayChange(CalendarView view, int year, int month, int day){

   // add one because month starts at 0
   month = month + 1;
   // output to log cat **not sure how to format year to two places here**
   String newDate = year+"-"+month+"-"+day;
   Log.d("NEW_DATE", newDate);
}
}

我正在寻找将毫秒日期转换为普通可读格式的解决方案,这个方法很管用! - LargeGlasses
@KalaJ 这是一个 OnDateChangeListener。请参考 API 参考文档:http://developer.android.com/reference/android/widget/CalendarView.OnDateChangeListener.html - kandroidj

3
kandroidj的答案有助于创建日期,但不是正确格式的日期。 因此,要格式化所选日期:
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {

        @Override
    public void onSelectedDayChange(CalendarView view, int year, int month,
                                    int dayOfMonth) {
        final SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month, dayOfMonth);
        String sDate = sdf.format(calendar.getTime());
        Log.d(TAG, "sDate formatted: " + sDate);
    }
});

1
你应该使用SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String selectedDate = sdf.format(new Date(calendar.getDate()));

0
long date = calenderView.getDate();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(date);
int Year = calendar.get(Calendar.YEAR);
int Month = calendar.get(Calendar.MONTH);
int Day = calendar.get(Calendar.DAY_OF_MONTH);
//customize According to Your requirement
String finalDate=Year+"/"+Month+"/"+Day;

这个不符合问题,因为CalendarView.getDate()返回的是当前日期(如果晚于当前日期,则返回最小日期),而不是所选日期。只有使用setOnDateChangeListener的解决方案才适用于此处。 - DropDrage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接