Android日期选择器,年月日判断处理。

举报
yechaoa 发表于 2022/05/31 00:03:28 2022/05/31
【摘要】 MainActivity.java package com.yechaoa.datepickerdemo; import android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;import andr...



MainActivity.java


  
  1. package com.yechaoa.datepickerdemo;
  2. import android.app.AlertDialog;
  3. import android.content.DialogInterface;
  4. import android.os.Bundle;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.widget.NumberPicker;
  9. import android.widget.TextView;
  10. import java.util.Calendar;
  11. public class MainActivity extends AppCompatActivity {
  12. private TextView tvDate;
  13. private View mView;
  14. private NumberPicker np1, np2, np3;
  15. private int maxDay;
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20. tvDate = (TextView) findViewById(R.id.tv_date);
  21. tvDate.setOnClickListener(new View.OnClickListener() {
  22. @Override
  23. public void onClick(View v) {
  24. showDateDialog();
  25. }
  26. });
  27. }
  28. public void showDateDialog() {
  29. mView = View.inflate(this, R.layout.date_dialog, null);
  30. np1 = (NumberPicker) mView.findViewById(R.id.np1);
  31. np2 = (NumberPicker) mView.findViewById(R.id.np2);
  32. np3 = (NumberPicker) mView.findViewById(R.id.np3);
  33. //获取当前日期
  34. Calendar c = Calendar.getInstance();
  35. final int year = c.get(Calendar.YEAR);
  36. final int month = c.get(Calendar.MONTH)+1;//月份是从0开始算的
  37. final int day = c.get(Calendar.DAY_OF_MONTH);
  38. //设置年份
  39. np1.setMaxValue(2999);
  40. np1.setValue(year); //中间参数 设置默认值
  41. np1.setMinValue(1900);
  42. //设置月份
  43. np2.setMaxValue(12);
  44. np2.setValue(month);
  45. np2.setMinValue(1);
  46. //设置天数
  47. np3.setMaxValue(31);
  48. np3.setValue(day);
  49. np3.setMinValue(1);
  50. //年份滑动监听
  51. np1.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
  52. @Override
  53. public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
  54. Log.i("NumberPicker","oldVal-----"+oldVal+"-----newVal-----"+newVal);
  55. //平年闰年判断
  56. if(newVal%4==0){
  57. maxDay=29;
  58. }else {
  59. maxDay = 28;
  60. }
  61. //设置天数的最大值
  62. np3.setMaxValue(maxDay);
  63. }
  64. });
  65. //月份滑动监听
  66. np2.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
  67. @Override
  68. public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
  69. Log.i("NumberPicker","oldVal-----"+oldVal+"-----newVal-----"+newVal);
  70. //月份判断
  71. switch (newVal){
  72. case 2:
  73. if(np1.getValue()%4==0){
  74. maxDay=29;
  75. }else{
  76. maxDay=28;
  77. }
  78. break;
  79. case 1:
  80. case 3:
  81. case 5:
  82. case 7:
  83. case 8:
  84. case 10:
  85. case 12:
  86. maxDay=31;
  87. break;
  88. default:
  89. maxDay=30;
  90. break;
  91. }
  92. //设置天数的最大值
  93. np3.setMaxValue(maxDay);
  94. }
  95. });
  96. new AlertDialog.Builder(MainActivity.this).setTitle("请选择时间")
  97. .setView(mView)
  98. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  99. @Override
  100. public void onClick(DialogInterface dialog, int which) {
  101. int years = np1.getValue();
  102. int months = np2.getValue();
  103. int days = np3.getValue();
  104. tvDate.setText(years + "年" + months + "月" + days + "日");
  105. dialog.dismiss();
  106. }
  107. })
  108. .setNegativeButton("取消", new DialogInterface.OnClickListener() {
  109. @Override
  110. public void onClick(DialogInterface dialog, int which) {
  111. dialog.dismiss();
  112. }
  113. })
  114. .show();
  115. }
  116. }


github:https://github.com/yechaoa/DatePickerDemo



文章来源: blog.csdn.net,作者:yechaoa,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yechaoa/article/details/70211193

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。