using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 日期选择组 /// public class DatePickerGroupNew : MonoBehaviour { /// /// 最小日期和最大日期 /// public DateTime _minDate, _maxDate; /// /// 选择的日期(年月日时分秒) /// public DateTime _selectDate; /// /// 时间选择器列表 /// public List _datePickerList; /// /// 当选择日期的委托事件 /// public event OnDateUpdate _OnDateUpdate; public static DateTime _selectTime; [SerializeField] Button btnClose; [SerializeField] Button btnEnter; public Action onEnter; void Awake() { //设置最大最小日期 _minDate = new DateTime(1950, 1, 1, 0, 0, 0); _maxDate = new DateTime(2060, 1, 1, 0, 0, 0); Init(); if (btnClose) { btnClose.onClick.AddListener(() => { Destroy(transform.GetComponentInParent().gameObject); }); } if (btnEnter) { btnEnter.onClick.AddListener(() => { Destroy(transform.GetComponentInParent().gameObject); onEnter?.Invoke(this); }); } } private void Update() { } public void Init(DateTime dt) { _selectDate = dt; for (int i = 0; i < _datePickerList.Count; i++) { _datePickerList[i].myGroup = this; _datePickerList[i].Init(); _datePickerList[i]._onDateUpdate += onDateUpdate; } } public void Init() { _selectDate = new DateTime(1995, 1, 1, 0, 0, 0); //DateTime.Now; for (int i = 0; i < _datePickerList.Count; i++) { _datePickerList[i].myGroup = this; _datePickerList[i].Init(); _datePickerList[i]._onDateUpdate += onDateUpdate; } int languageID = PlayerPrefs.GetInt("Language", 0); string title = languageID == 0 ? "日期选择" : "Date Select"; string title0 = languageID == 0 ? "年" : "Year"; string title1 = languageID == 0 ? "月" : "Month"; string title2 = languageID == 0 ? "日" : "Day"; transform.Find("TopBar/Title").GetComponent().text = title; transform.Find("ViewPort/DatePicker_Year/year").GetComponentInChildren().text = title0; transform.Find("ViewPort/DatePicker_Month/month").GetComponentInChildren().text = title1; transform.Find("ViewPort/DatePicker_Day/day").GetComponentInChildren().text = title2; } /// /// 当选择的日期更新 /// public void onDateUpdate() { // Debug.Log("当前选择日期:" + _selectDate.ToString("yyyy年MM月dd日 HH : mm : ss")); //将选中的时间给_selectTime ,供其他界面调用 _selectTime = _selectDate; for (int i = 0; i < _datePickerList.Count; i++) { _datePickerList[i].RefreshDateList(); } } public string GetSelectDateStr() { _selectTime = _selectDate; return _selectTime.ToString("yyyy-MM-dd"); } }