Witam. Zrobiłem timer w konsoli z dosyć zgrabną i prostą mechaniką. Przy tworzeniu obiektu klasy DateTime jest błąd przy przekazywaniu argumentów. Na wypadek gdyby użytkownik podał nie prawidłowe dane tworzenie obiektu klasy DateTime jest zabezpieczone try and catch'em, lecz obojętnie jakie wartości podam nawet jeżeli są prawdziwe wyświetla się błąd.
Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace DateTim
{
class Program
{
static string czas;
static int year, month, day, hour, min, seconds;
static void Main(string[] args)
{
Console.WriteLine("Podaj rok, miesiąc, dzień, godzinę, minutę, sekundę (W TAKIEJ KOLEJNOŚCI!!!)");
try
{
year = Console.Read(); month = Console.Read(); day = Console.Read(); hour = Console.Read(); min = Console.Read(); seconds = Console.Read();
DateTime argument = new DateTime(year, month, day, hour, min, seconds, DateTimeKind.Local);
licznik(argument);
}
catch (Exception ex)
{
Console.WriteLine("Wystąpił błąd! Któraś z podanych wartości prawdopodobnie nie jest liczbą!");
Console.ReadKey();
}
}
static string licznik(DateTime data)
{
DateTime teraz = DateTime.Now;
if (teraz < data) Console.WriteLine("To już minęło!");
TimeSpan odc_czasu = data - teraz;
string[] stringi = new string[6];
if ((year < 10) || (month < 10) || (day < 10) || (hour < 10) || (min < 10) || (seconds < 10))
{
if (year < 10) stringi[0] = "0" + stringi[0];
if (month < 10) stringi[1] = "0" + stringi[0];
if (day < 10) stringi[2] = "0" + stringi[0];
if (hour < 10) stringi[3] = "0" + stringi[0];
if (min < 10) stringi[4] = "0" + stringi[0];
if (seconds < 10) stringi[5] = "0" + stringi[0];
}
while((seconds == 0) && (min == 0) && (hour == 0) && (day == 0) && (month == 0) && (year == 0))
{
if (seconds != 0) seconds--;
if ((seconds == 0) && (min != 0)) min--;
if ((min == 0) && (hour != 0)) hour--;
if ((hour == 0) && (day != 0)) day--;
if ((day == 0) && (month != 0)) month--;
if ((month == 0) && (year != 0)) year--;
stringi[0] = year.ToString(); stringi[1] = month.ToString(); stringi[2] = day.ToString(); stringi[3] = hour.ToString(); stringi[4] = min.ToString(); stringi[5] = seconds.ToString();
czas = stringi[0] + stringi[1] + stringi[2] + stringi[3] + stringi[4] + stringi[5];
Thread.Sleep(1000);
}
return czas;
}
}
}
PS. Mam jeszcze takie pytanie. W jaki sposób można napisać program, który włączy się przy uruchamianiu komputera i tylko w tray'u?
grzesiek51114<code=csharp></code>