如何在android的日期选择器中设置特定日期
Posted
技术标签:
【中文标题】如何在android的日期选择器中设置特定日期【英文标题】:How to set a specific date in date picker in android 【发布时间】:2014-12-06 07:00:33 【问题描述】:我尝试了很多,但都不起作用。
我需要我的日期选择器,日期从 2014 年 9 月 1 日开始。但它从 1900 年开始。 我设置了最小日期概念,它会消失所有过去的日期。 请大家帮忙。
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.daty);
click=(ImageView)findViewById(R.id.click);
hdate=(TextView)findViewById(R.id.hdate);
timeStamp = new SimpleDateFormat("dd/MM/yyyy").format(new Date(System.currentTimeMillis()));
hdate.setText(timeStamp);
final Calendar myCalendar = Calendar.getInstance();
final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener()
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth)
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
click.setVisibility(View.VISIBLE);
updateLabel();
private void updateLabel()
// TODO Auto-generated method stub
String myFormat = "dd/MM/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
hdate.setText(sdf.format(myCalendar.getTime()));
;
hdate.setOnClickListener(new OnClickListener()
public void onClick(View v)
DatePickerDialog datePickerDialog = new DatePickerDialog(Daty.this,date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
);
click.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
// TODO Auto-generated method stub
Intent in=new Intent(Daty.this,Mainy.class);
startActivity(in);
);
【问题讨论】:
Setting custom date in DatePicker的可能重复 我刚刚为您的问题添加了一个新答案! 【参考方案1】:class DatePickerDialog1964 extends DatePickerDialog
DatePickerDialog1964(Context c)
super(c, null, 2013, 4, 21);
@SuppressWarnings("deprecation")
Date min = new Date(2013-1900, 4, 21);
DatePicker p = getDatePicker();
CalendarView cv = p.getCalendarView(); // should check for null
long cur = cv.getDate();
int d = cv.getFirstDayOfWeek();
p.setMinDate(min.getTime());
cv.setDate(cur + 1000L*60*60*24*40);
cv.setFirstDayOfWeek((d + 1) % 7);
cv.setDate(cur);
cv.setFirstDayOfWeek(d);
或
DatePickerDialog dpDialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
DatePicker datePicker = dpDialog.getDatePicker();
Calendar calendar = Calendar.getInstance();//get the current day
datePicker.setMinDate(calendar.getTimeInMillis());//set the current day as the max date
return dpDialog;
【讨论】:
谢谢,但我需要从 2014 年 1 月 1 日开始的日期选择器......有没有可能【参考方案2】:您可以通过此代码设置:
Calendar cal=Calendar.getInstance(Locale.ENGLISH);
datePickerDialog .init(cal.getTime().getYear()+1900, cal.getTime().getMonth(), cal.getTime().getDay(), this);
编辑
要将最小日期设置为您的DatePicker
,您可以使用:
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
将今天的日期设置为最小日期,所有过去的日期都被禁用。
注意:setMinDate 是在 API 11 中引入的
编辑 #2
您需要为此创建自定义DatePickerDialog
:
class DatePickerDialog1964 extends DatePickerDialog
DatePickerDialog1964(Context c)
super(c, null, 2014, 1, 1);
@SuppressWarnings("deprecation")
Date min = new Date(2014-1900, 1, 1);
DatePicker p = getDatePicker();
CalendarView cv = p.getCalendarView(); // should check for null
long cur = cv.getDate();
int d = cv.getFirstDayOfWeek();
p.setMinDate(min.getTime());
cv.setDate(cur + 1000L*60*60*24*40);
cv.setFirstDayOfWeek((d + 1) % 7);
cv.setDate(cur);
cv.setFirstDayOfWeek(d);
要使用这个:
new DatePickerDialog1964(context).show();
【讨论】:
你可以像这样在 DatePicker 中设置最小日期,检查我的编辑 谢谢,但我需要从 2014 年 1 月 1 日开始的日期选择器......有没有可能【参考方案3】:简单的解决方案:
int year = 2014;
int month = 1;
int day = 1;
DatePickerDialog datePickerDialog = new DatePickerDialog(EditProfileScreen.this,
android.R.style.Theme_Holo_Light_Dialog,
onDateSetListener, year, month, day);
datePickerDialog.setTitle(getString(R.string.birthday));
datePickerDialog.show();
所以日期选择器如您所愿从 2014 年 1 月 1 日开始 :)
【讨论】:
以上是关于如何在android的日期选择器中设置特定日期的主要内容,如果未能解决你的问题,请参考以下文章
如何在 API 28 中设置 android 日期和时间选择器的样式