[Age calculator C#] как реализовать контроль високосного года?
Привет,
Краткое резюме: я очень новичок в C#, и это мой первый раз, когда я программирую на этом языке. У меня больше опыта работы со скриптовыми языками. Для задания в колледже мы должны сделать калькулятор возраста, который вычисляет возраст в днях пользователя на основе ввода поля со списком.
Мой вопрос заключается в том, как (и где) я могу реализовать контроль високосного года в своем коде? Я осознаю дату и время.IsLeapYear, однако я очень незнаком с синтаксисом и не знаю, с чего начать.
Я добавил свой код ниже, чтобы вы могли видеть мой прогресс до сих пор. Я работаю в Visual Studio 2017.
P.S. Я также должен где-то реализовать блок try/catch, но, как я уже сказал выше, я не знаю, с чего начать. К чему это приведет?
Что я уже пробовал:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace NumberOfDaysOld { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //========================================================= // DISPLAYS MONTHS OF THE YEAR IN THE MONTH COMBOBOX //========================================================= string[] monthArray = new string[12]; monthArray[0] = "January"; monthArray[1] = "February"; monthArray[2] = "March"; monthArray[3] = "April"; monthArray[4] = "May"; monthArray[5] = "June"; monthArray[6] = "July"; monthArray[7] = "August"; monthArray[8] = "September"; monthArray[9] = "October"; monthArray[10] = "November"; monthArray[11] = "December"; for (int index = 0; index < monthArray.Length; index++) { comboBoxMonth.Items.Add(monthArray[index]); } //========================================================= // DISPLAYS YEARS 1900 TO CURRENT YEAR IN THE YEAR COMBOBOX //========================================================= for (int i = 1900; i <= DateTime.Now.Year; i++) { comboBoxYear.Items.Add(i.ToString()); } //========================================================= // DISPLAYS DATES OF THE MONTH IN THE DAYS COMBOBOX //========================================================= for (int i = 1; i <= 31; i++) { comboBoxDay.Items.Add(i.ToString()); } } private void timerDateTime_Tick(object sender, EventArgs e) { //========================================================= // DISPLAYS THE DATE AND TIME IN REALTIME //========================================================= labelDate.Text = DateTime.Now.ToShortDateString(); labelTime.Text = DateTime.Now.ToLongTimeString(); } private void comboBoxDay_SelectedIndexChanged(object sender, EventArgs e) { } private void comboBoxMonth_SelectedIndexChanged(object sender, EventArgs e) { } private void buttonCalculate_Click(object sender, EventArgs e) { DateTime dob = new DateTime(Convert.ToInt32(comboBoxYear.SelectedItem), comboBoxMonth.SelectedIndex + 1, Convert.ToInt32(comboBoxDay.SelectedItem)); TimeSpan diff = DateTime.Now - dob; int days = (int)diff.TotalDays; MessageBox.Show(textBoxForename.Text + " is days old " + days.ToString()); } } } }
[no name]
https://msdn.microsoft.com/en-us/library/system.datetime.isleapyear(v=против 110). aspx
https://msdn.microsoft.com/en-us/library/0yd65esw.aspx
PIEBALDconsult
Зачем делать это трудным путем?
Система.DateTime dt0 = новая система.Дата и время (2016, 02, 01 ) ;
Система.DateTime dt1 = новая система.Дата и время (2016, 03, 01 ) ;
Система.TimeSpan ts = dt1 - dt0 ;
Система.Приставка.WriteLine ( ts. TotalDays ) ;
Richard Deeming
Я думаю, вы просто хотите проверить, является ли выбранный день меньше или равен количество дней в выбранном месяце[^]?
Нет необходимости в каком-либо специальном коде високосного года; DateTime
тип позаботится об этом за вас.
Nick_3141592654
Что касается попытки поймать, о которой вы спрашивали. Это, по-видимому, задание колледжа, цель которого, по-видимому, состоит в том, чтобы вы: (а) узнали что-то и (Б) продемонстрировали, что вы это узнали.
Учитывая эти цели, почему бы вам не потратить 15 минут на чтение о try-catch, чтобы понять, для чего он предназначен, и тогда вы будете знать, где его целесообразно использовать.
Если кто-то просто скажет: "О, вы можете положить его сюда ..." - вы ничего не узнаете.