【问题标题】:How to get datepicker month field in two digit format in android如何在android中以两位数格式获取日期选择器月份字段
【发布时间】:2017-01-25 07:31:11
【问题描述】:

如何以 1-02-2017 等两位数格式显示月份字段,但没有找到正确的方法来实现这种格式。建议一些可能的解决方案。

public static class SelectDateFragmentForJourneyDate extends DialogFragment
    implements DatePickerDialog.OnDateSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Calendar calendar = Calendar.getInstance();
        int yy = calendar.get(Calendar.YEAR);
        int mm = calendar.get(Calendar.MONTH);
        int dd = calendar.get(Calendar.DAY_OF_MONTH);

        DatePickerDialog d = new DatePickerDialog(getActivity(), this, yy,
            mm, dd);
        DatePicker dp = d.getDatePicker();

        dp.setMinDate(c.getTimeInMillis());
        return d;
    }

    public void onDateSet(DatePicker view, int yy, int mm, int dd) {

        populateSetDate(yy, mm + 1, dd);
    }

    public void populateSetDate(int year, int month, int day) {


        etPickupDate.setText(new StringBuilder().append(day).append("-")
            .append(monthof).append("-").append(year).append(" "));

        etDropDate.setText(new StringBuilder().append(day).append("-")
            .append(monthof).append("-").append(year).append(" "));
    }

}

【问题讨论】:

    标签: android datepicker


    【解决方案1】:

    用下面的方法替换你的populateSetDate

    public void populateSetDate (int year, int month, int day){
    
            String monthString = String.valueOf(month);
            if (monthString.length() == 1) {
                monthString = "0" + monthString;
            }
    
            etPickupDate.setText(new StringBuilder().append(day).append("-")
                    .append(monthString).append("-").append(year).append(" "));
    
            etDropDate.setText(new StringBuilder().append(day).append("-")
                    .append(monthString).append("-").append(year).append(" "));
    }
    

    【讨论】:

    • 你应该添加月份+1
    • @ReemAziz 已经添加有问题populateSetDate(yy, mm + 1, dd);
    【解决方案2】:

    您可以通过以下方式实现此目的

    Calandar calendar = Calendar.getInstance();
               int mDay = calendar.get(Calendar.DAY_OF_MONTH);
               int mMonth = calendar.get(Calendar.MONTH);
               int mYear = calendar.get(Calendar.YEAR);
                datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                        monthOfYear+=1;
                        String mt,dy;   //local variable 
                        if(monthOfYear<10)
                            mt="0"+monthOfYear; //if month less than 10 then ad 0 before month
                        else mt=String.valueOf(monthOfYear);
    
                        if(dayOfMonth<10)
                            dy = "0"+dayOfMonth;
                        else dy = String.valueOf(dayOfMonth);
                        date.setText(dy+"-"+mt+"-"+year);
                    }
                },mYear,mMonth,mDay);
                datePickerDialog.show(); 
    

    我希望这对你有用

    【讨论】:

      【解决方案3】:

      将您的populateSetDate 更新为:

      public void populateSetDate(int year, int month, int day) {
      
          Calendar calendar= Calendar.getInstance();
          calendar.set(year,month,day);
          String s =String.format(Locale.getDefault(),"%1$te-%1$tm-%1$tY",calendar);
              etPickupDate.setText(s);
      
              etDropDate.setText(s);
          }
      

      【讨论】:

        【解决方案4】:

        看这里

        public class FormattingMonth {
        
          public static void main(String[] args) {
        
            //create Date object
            Date date = new Date();
        
             //formatting month in M format like 1,2 etc
             String strDateFormat = "M";
             SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
        
             System.out.println("Current Month in M format : " + sdf.format(date));
        
             //formatting Month in MM format like 01, 02 etc.
             strDateFormat = "MM";
             sdf = new SimpleDateFormat(strDateFormat);
             System.out.println("Current Month in MM format : " + sdf.format(date));
        
             //formatting Month in MMM format like Jan, Feb etc.
             strDateFormat = "MMM";
             sdf = new SimpleDateFormat(strDateFormat);
             System.out.println("Current Month in MMM format : " + sdf.format(date));
        
             //formatting Month in MMMM format like January, February etc.
             strDateFormat = "MMMM";
             sdf = new SimpleDateFormat(strDateFormat);
             System.out.println("Current Month in MMMM format : " + sdf.format(date));
        
          }
        }
        
        /*
        Typical output would be
        Current Month in M format : 2
        Current Month in MM format : 02
        Current Month in MMM format : Feb
        Current Month in MMMM format : February
        */
        

        【讨论】:

          【解决方案5】:

          日历日历= Calendar.getInstance();

          calendar.set(年,月,日);

          String mDate=DateFormat.getDateInstance(DateFormat.SHORT).format(calendar.getTime());

          【讨论】:

          • 纯代码答案是低质量的答案。此外,代码格式不正确。考虑编辑此问题以避免否决和最终删除。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-29
          • 2013-04-17
          • 2012-07-29
          • 1970-01-01
          • 1970-01-01
          • 2011-05-06
          相关资源
          最近更新 更多