Loading...
mihayloff14 avatar mihayloff14 824 Точки

Задача свързана с DateTime и if clause

Здравейте,

Една от задачите за домашно е следната:

Write a program to read your birthday from the console and print how old you are now and how old you will be after 10 years.

Успях да направя същественото, но се затруднявам с "доизглаждането" на програмата.
Кодът ми е следният:

using System;

class AgeAfter10yrs
 {
     static void Main()
    {
            string startdate;
            Console.WriteLine("Please, type in your birthdate (dd-mm-yyyy)");
            startdate = Console.ReadLine();
            DateTime bday = DateTime.Parse(startdate);
            DateTime now = DateTime.Now;
            TimeSpan ts1 = now.Subtract(bday);
            DateTime dt = new DateTime(0001, 01, 01);
            TimeSpan ts2 = new TimeSpan(365, 0, 0, 0);
            TimeSpan ts3 = new TimeSpan(3650, 0, 0, 0);
            dt = dt + ts1 - ts2;
            Console.WriteLine("Your current age is:{0}",dt.ToString("yy"));
            dt = dt + ts3;
            Console.WriteLine("Your Age after 10 years will be:{0}",dt.ToString("yy"));

     }
}

Върпросът ми е:
1. Как би трябвало да постъпя, за да може в случай, че се въведе различна стойност от (dd-mm-yyyy) да връща обратно към първоначалния случай? Очевидно е, че трябва if clause, но в случая стойността не е проста.

2. Въпреки че има малка вероятност (но все пак сме устремени към съвършенството), го има проблема с високосни години. Ако беше pascal, проблема би бил по-лесен (чрез mod), но очевидно тук не става по същия начин. Това е необходимо, за да се знае дали в уравнението да се използва като стойност, за даден ts(timespan) - 365 или 366.

 

Благодаря предварително за вниманието.

 

Тагове:
0
Programming Basics
aslv1 avatar aslv1 304 Точки

Трябва да сложиш въвеждането в цикъл - т. е. докато въведената дата не се „парсне“ успешно - продължаваш да искаш въвеждане.

Колкото до въпроса с годините, си напълно прав, например 1000 дни не може да се каже точно колко години са. Вече ти си решаваш как ще постъпваш - дали ще извеждаш броя на дните или ще даваш приблизителна оценка за годините.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.