java - 以 DD/MM/YYYY 格式设置日期格式,以便在日历选择器 View 中选择多个日期 (Android)

标签 java android date datetime calendar

我有一个日历选择器,可以选择多个日期。下面有按钮可以显示我选择的日期。但是我得到的日期格式为[MON OCT 12 00:00:00 GMT +530,FRI OCT 16 00:00:00 GMT+05:30 2015,SAT OCT 17 00:00:00 GMT+05:30 2015]。但我的要求是获取以下格式的日期2015年12月10日、2015年10月16日、2015年10月17日。我怎样才能实现同样的目标? 提前致谢。 下面是我使用的代码

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    final View rootView2 = inflater.inflate(R.layout.monthly_planner, container, false);
    Calendar nextYear=Calendar.getInstance();
    nextYear.add(Calendar.YEAR, 1);
    calendar=(CalendarPickerView) rootView2.findViewById(R.id.calendar_view);
    Date today=new Date();
    calendar.init(today,nextYear.getTime()).withSelectedDate(today).inMode(CalendarPickerView.SelectionMode.MULTIPLE);
   // calendar.highlightDates(getHolidays());
    dropdown=(Spinner) rootView2.findViewById(R.id.monthly_planner_spinner);
    String[] items1 = new String[]{"Select Something"};
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, items1);
    dropdown.setAdapter(adapter);
    button= (Button) rootView2.findViewById(R.id.action_next);
    Button button1=(Button) rootView2.findViewById(R.id.btnconfirm);
    datesSelected = (TextView) rootView2.findViewById(R.id.dateView);
    button1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            startActivity(new Intent(getActivity(), Order_ConfirmationActivity.class));
        }
    });
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            ArrayList<Date>selectedDates=(ArrayList<Date>)calendar
                    .getSelectedDates();
//                Toast.makeText(getActivity(), selectedDates.toString(),
//                        Toast.LENGTH_LONG).show();
            String dates=selectedDates.toString();
            SimpleDateFormat df=new SimpleDateFormat("dd/mm/yyyy");
            for (int i=0;i<dates.length();i++)
            {
                 date[i] = df.format(dates);
            }
          for (int i=0;i<date.length;i++){
              datesSelected.setText(date[i]);
          }
        }
    });
    return rootView2;
}

最佳答案

您需要对日期对象应用格式设置,而不是字符串对象,如下所示:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = Calendar.getInstance().getTime();
System.out.println(sdf.format(date)); // 12/10/2015

因此,在您的情况下,您在 selectedDates 中有日期数组列表,您需要格式化此数组列表中的日期对象。请注意格式:dd/MM/yyyy(大写 M)。有关更多格式,请检查 SimpleDateFormat javadoc 中的日期和时间模式

[更新]我猜您正在使用 CalendarPickerView 允许选择多个日期,您通过 calendar.getSelectedDates() 检索这些日期,然后尝试在中显示多个日期datesSelected (TextView)。您可以尝试以下方法:

ArrayList<Date>selectedDates = (ArrayList<Date>)calendar.getSelectedDates();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");
for(int i = 0; i< selectedDates.size(); i++)
{
   Date tempDate = selectedDates.get(i);
   String formattedDate = sdf.format(tempDate);
   datesSelected.append(formattedDate);
   //Following if is added to avoid adding comma after the last date.
   if(i != selectedDates.size() -1)
   {
     datesSelected.append(",");
   }

}

关于java - 以 DD/MM/YYYY 格式设置日期格式,以便在日历选择器 View 中选择多个日期 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33073513/

相关文章:

java - 从字符串中选择前五个 CSV 的正则表达式

android - 用于交替行颜色的通用阵列适配器?

javascript - 日期对象 Javascript 在使用毫秒时创建错误的时间

pandas - 如何为 "start_date"列和 "end_date"列中的每一行创建 pandas.date_range() ?

scala - 如何从字符串中获取日期和时间?

java - DefaultMessageListenerContainer,让 sessionTransacted 属性工作?

java - 按列解析 HTML 表格

java - 将 ListView 添加到 fragment 给出错误

android - 带 Flutter 的传送带 - 在本地运行 .net Web 应用程序时出现握手错误

java - 使用 android 的默认图库 Intent