Java 如何从android DatePicker获取格式化日期

Java 如何从android DatePicker获取格式化日期,java,android,datetime,datepicker,Java,Android,Datetime,Datepicker,android DatePicker提供以下回调 public void onDateSet(DatePicker view, int year, int month, int day) { // Do something with the date chosen by the user } 如何提取以下内容: 对于int day获取文本日,如周五、周一、周二或周四 对于int month获取文本月份,如一月、二月或三月 所以基本上我想得到两个不同的值,一天一个,然

android DatePicker提供以下回调

public void onDateSet(DatePicker view, int year, int month, int day) {
        // Do something with the date chosen by the user
    }
如何提取以下内容:

  • 对于
    int day
    获取文本日,如周五、周一、周二或周四
  • 对于
    int month
    获取文本月份,如一月、二月或三月
所以基本上我想得到两个不同的值,一天一个,然后一个月一个

SimpleDateFormat dateformat=new SimpleDateFormat("dd/MMM/yyyy");
放入日历对象

Calendar cal=Calendar.getInstance();
cal.set(Calendar.Date,day);
cal.set(Calendar.Month,month);
cal.set(Calendar.Year,year);
StringformatedDate=dateFormat.format(cal.getTime());
您可以尝试以下方法:

public void onDateSet(DatePicker view, int year, int month, int day) {
    Calendar calendar = Calendar.getInstance();
    calendar.set(year, month, day);

    SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM");
    String output = formatter.format(calendar.getTime()); //eg: "Tue May"
}

在回调侦听器类中,应用
SimpleDataFormat
以文本形式获取日期和月份,例如:

Calendar now = Calendar.getInstance();

DatePicker datePicker = ... // e.g. (DatePicker) fragmentView.findViewById(R.id.datePicker);
datePicker.init(now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH),
    new DatePicker.OnDateChangedListener() {
        final SimpleDateFormat mDayFormat = new SimpleDateFormat("EEE", Locale.US);
        final SimpleDateFormat mMonthFormat = new SimpleDateFormat("MMM", Locale.US);

        @Override
        public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            Calendar cal = Calendar.getInstance();
            cal.set(year, monthOfYear, dayOfMonth);

            String day = mDayFormat.format(cal.getTime());
            String month = mMonthFormat.format(cal.getTime());

            // ... Do stuff with 'day', 'month'.
        }
    });
通过以下方式初始化格式,您还可以获得日、月(例如,星期五、十一月)的完整表示形式:

final SimpleDateFormat mDayFormat = new SimpleDateFormat("EEEE", Locale.US);
final SimpleDateFormat mMonthFormat = new SimpleDateFormat("MMMM", Locale.US);

谢谢我用的不是“EEE”,而是“ddd”。现在它起作用了。谢谢查找
SimpleDataFormat
的所有可用格式选项这里有一个小提示:在创建DateFormat对象时始终指定区域设置,或者使用一个静态工厂方法,例如SimpleDataFormat.getDateInstances()。否则,生成的日+月文本可能使用不同的语言。在您的情况下,我认为无论设备的语言环境如何,您都希望得到英语的结果,因此您可以安全地使用locale.US作为SimpleDataFormat c'tor的第二个参数。