【问题标题】:How to get formatted date from android DatePicker如何从 android DatePicker 获取格式化日期
【发布时间】:2016-03-02 00:45:43
【问题描述】:

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,获取文本月份,例如 Jan、Feb 或 Mar

所以基本上我想获得两个不同的值,一个单独的一天,一个单独的一个月。

【问题讨论】:

    标签: java android datetime datepicker


    【解决方案1】:

    你可以试试这个:

    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"
    }
    

    【讨论】:

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

    在您的回调侦听器类中,应用 SimpleDateFormat 以获取日期和月份作为文本 - 例如如下:

    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);
    

    【讨论】:

      【解决方案3】:

      使用

      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());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-23
        • 1970-01-01
        • 2021-12-05
        • 2015-09-21
        • 1970-01-01
        • 1970-01-01
        • 2012-12-09
        • 1970-01-01
        相关资源
        最近更新 更多