效果:
闰年的2月有29天:
平年的2月只有28天:
其他月份的日期也会随月份变化:
点保存后获取下拉框文本
代码:
using UnityEngine;
using UnityEngine.UI;
public class MyBirthDay : MonoBehaviour
{
[Space]
public Dropdown YearDropdown; //年下拉框
public Dropdown MonthDropdown; //月下拉框
public Dropdown DayDropdown; //日下拉框
[Space]
public Button saveButton; //保存按钮
// Start is called before the first frame update
void Start()
{
//初始化的期日
initBirthDrop1("1999","10","12");
MonthDropdown.onValueChanged.AddListener(monthValueChange);
YearDropdown.onValueChanged.AddListener(yearValueChange);
saveButton.onClick.AddListener(onSaveClick);
}
private void onSaveClick()
{
//输出选择的日期
Debug.Log(YearDropdown.options[YearDropdown.value].text + "-" + MonthDropdown.options[MonthDropdown.value].text + "-" + DayDropdown.options[DayDropdown.value].text);
}
private void monthValueChange(int index)
{
DayDropdown.options.Clear();
string[] arryaDay = initDayList(YearDropdown.options[YearDropdown.value].text, (index + 1).ToString());
for (int i = 0; i < arryaDay.Length; i++)
{
Dropdown.OptionData d = new Dropdown.OptionData();
d.text = arryaDay[i];
DayDropdown.options.Add(d);
}
}
private void yearValueChange(int index)
{
DayDropdown.options.Clear();
string[] arryaDay = initDayList(YearDropdown.options[YearDropdown.value].text, MonthDropdown.options[MonthDropdown.value].text);
for (int i = 0; i < arryaDay.Length; i++)
{
Dropdown.OptionData d = new Dropdown.OptionData();
d.text = arryaDay[i];
DayDropdown.options.Add(d);
}
}
private void initBirthDrop1(string year, string month, string day)
{
YearDropdown.options.Clear();
MonthDropdown.options.Clear();
DayDropdown.options.Clear();
//要显示几年
int year_num = 10;
//初始年份
int startYear = 1995;
string[] arrayYear = new string[year_num];
string[] arryaMonth = new string[12];
string[] arryaDay = initDayList(year, month);
for (int i = 0; i < year_num; i++)
{
arrayYear[i] = startYear.ToString();
startYear++;
}
for (int i = 0; i < 12; i++)
{
arryaMonth[i] = (i + 1).ToString();
}
for (int i = 0; i < arrayYear.Length; i++)
{
Dropdown.OptionData y = new Dropdown.OptionData();
y.text = arrayYear[i];
YearDropdown.options.Add(y);
}
for (int i = 0; i < arryaMonth.Length; i++)
{
Dropdown.OptionData m = new Dropdown.OptionData();
m.text = arryaMonth[i];
MonthDropdown.options.Add(m);
}
for (int i = 0; i < arryaDay.Length; i++)
{
Dropdown.OptionData d = new Dropdown.OptionData();
d.text = arryaDay[i];
DayDropdown.options.Add(d);
}
YearDropdown.value = int.Parse(year) - startYear + year_num;
MonthDropdown.value = int.Parse(month) - 1;
DayDropdown.value = int.Parse(day) - 1;
}
//获取日期表
private string[] initDayList(string year, string month)
{
if (month == "4" || month == "6" || month == "9" || month == "11")
{
string[] arryaDay30 = new string[30];
for (int i = 0; i < 30; i++)
{
arryaDay30[i] = (i + 1).ToString();
}
return arryaDay30;
}
else if (month == "2")
{
if (int.Parse(year) % 4 == 0 && int.Parse(year) % 100 != 0)
{
string[] arryaDay29 = new string[29];
for (int i = 0; i < 29; i++)
{
arryaDay29[i] = (i + 1).ToString();
}
return arryaDay29;
}
else
{
string[] arryaDay28 = new string[28];
for (int i = 0; i < 28; i++)
{
arryaDay28[i] = (i + 1).ToString();
}
return arryaDay28;
}
}
else
{
string[] arryaDay31 = new string[31];
for (int i = 0; i < 31; i++)
{
arryaDay31[i] = (i + 1).ToString();
}
return arryaDay31;
}
}
}