diff --git a/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Program.cs b/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Program.cs
index af4efcae..6b8dc964 100644
--- a/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Program.cs
+++ b/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Program.cs
@@ -1,9 +1,19 @@
-namespace AdventureTime
+using System;
+
+namespace AdventureTime
{
internal class Program
{
private static void Main()
{
+ Console.WriteLine(Time.WhatTimeIsIt());
+ Console.WriteLine(Time.WhatTimeIsItInUtc());
+ Console.WriteLine(Time.ToRoundTripFormatString(Time.SpecifyKind(Time.WhatTimeIsIt(), DateTimeKind.Utc)));
+ Console.WriteLine(Time.ToRoundTripFormatString(Time.SpecifyKind(Time.WhatTimeIsIt(), DateTimeKind.Local)));
+ Console.WriteLine(Time.ToRoundTripFormatString(Time.SpecifyKind(Time.WhatTimeIsIt(), DateTimeKind.Unspecified)));
+ Console.WriteLine(Time.SpecifyKind(Time.WhatTimeIsIt(), DateTimeKind.Local));
+ Console.WriteLine(Time.SpecifyKind(Time.WhatTimeIsIt(), DateTimeKind.Unspecified));
+ Console.WriteLine(Time.SpecifyKind(Time.WhatTimeIsIt(), DateTimeKind.Utc));
}
}
}
diff --git a/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Time.cs b/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Time.cs
index 45de70d1..40a98fbb 100644
--- a/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Time.cs
+++ b/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Time.cs
@@ -14,7 +14,7 @@ internal static class Time
///
public static DateTime WhatTimeIsIt()
{
- throw new NotImplementedException();
+ return DateTime.Now;
}
///
@@ -22,7 +22,8 @@ public static DateTime WhatTimeIsIt()
///
public static DateTime WhatTimeIsItInUtc()
{
- throw new NotImplementedException();
+ return DateTime.UtcNow;
+
}
///
@@ -33,10 +34,11 @@ public static DateTime WhatTimeIsItInUtc()
/// Объект с заданными временем и значением .
public static DateTime SpecifyKind(DateTime dt, DateTimeKind kind)
{
+ return DateTime.SpecifyKind(dt, kind);
/*
Подсказка: поищи в статических методах DateTime.
*/
- throw new NotImplementedException();
+
}
///
@@ -46,12 +48,14 @@ public static DateTime SpecifyKind(DateTime dt, DateTimeKind kind)
/// Строковое представление времени в формате ISO 8601.
public static string ToRoundTripFormatString(DateTime dt)
{
+
+ return dt.ToString("o");
/*
Обязательно поиграйся и посмотри на изменение результата в зависимости от dt.Kind (для этого тебе поможет метод выше).
Ну и на будущее запомни этот прекрасный строковый формат представления времени - он твой бро!
Название запоминать не нужно, просто помни, что для передачи значения в виде строки, выбирать лучше инвариантные относительно сериализации/десериализации форматы.
*/
- throw new NotImplementedException();
+
}
///
@@ -61,11 +65,11 @@ public static string ToRoundTripFormatString(DateTime dt)
/// Объект .
public static DateTime ParseFromRoundTripFormat(string dtStr)
{
+ return DateTime.Parse(dtStr);
/*
Поиграйся и проверь, что round-trip действительно round-trip, т.е. туда-обратно равно оригиналу (для туда воспользуйся предыдущим методом).
Проверь для всех значений DateTime.Kind.
*/
- throw new NotImplementedException();
}
///
@@ -73,11 +77,12 @@ public static DateTime ParseFromRoundTripFormat(string dtStr)
///
public static DateTime ToUtc(DateTime dt)
{
+
+ return dt.ToUniversalTime();
/*
Eсли воспользуешься нужным методом, то напоминаю, что результат его работы зависит от dt.Kind.
В случае dt.Kind == Unspecified предполагается, что время локальное, т.е. результат работы в случае Local и Unspecified совпадают. Такие дела
*/
- throw new NotImplementedException();
}
///
@@ -87,8 +92,8 @@ public static DateTime ToUtc(DateTime dt)
/// Время, передвинутое вперед на 10 секунд от заданного
public static DateTime AddTenSeconds(DateTime dt)
{
+ return dt.AddSeconds(10);
// здесь воспользуйся методами самого объекта и заодно посмотри какие еще похожие есть
- throw new NotImplementedException();
}
///
@@ -98,11 +103,12 @@ public static DateTime AddTenSeconds(DateTime dt)
/// Время, передвинутое вперед на 10 секунд от заданного
public static DateTime AddTenSecondsV2(DateTime dt)
{
+ return dt + TimeSpan.FromSeconds(10);
+
/*
Ну а здесь воспользуйся сложением с TimeSpan. Обрати внимание, что помимо конструктора, у класса есть набор полезных статических методов-фабрик.
Обрати внимание, что у TimeSpan нет статических методов FromMonth, FromYear. Как думаешь, почему?
*/
- throw new NotImplementedException();
}
///
@@ -113,12 +119,13 @@ public static DateTime AddTenSecondsV2(DateTime dt)
/// Полное количество часов заданного временного отрезка.
public static int GetHoursBetween(DateTime dt1, DateTime dt2)
{
+ return (int)(dt2 - dt1).TotalHours;
+
/*
1) Подумай, в чем разница между Hours и TotalHours
2) Проверь, учитывается ли Kind объектов при арифметических операциях.
3) Подумай, почему возвращаемое значение может отличаться от действительности.
*/
- throw new NotImplementedException();
}
///
@@ -126,8 +133,10 @@ public static int GetHoursBetween(DateTime dt1, DateTime dt2)
///
public static int GetTotalMinutesInThreeMonths()
{
- // ну тут все просто и очевидно, если сделал остальные и подумал над вопросами в комментах.
- throw new NotImplementedException();
+ DateTime now = WhatTimeIsIt();
+ DateTime next = now;
+ next.AddMonths(3);
+ return (int)Math.Floor((next - now).TotalMinutes);
}
#region Adventure time saga
@@ -277,7 +286,15 @@ private static ZonedDateTime GetZonedTime(LocalDateTime localTime, string timeZo
/// True - если родились в один день, иначе - false.
internal static bool AreEqualBirthdays(DateTime person1Birthday, DateTime person2Birthday)
{
- throw new NotImplementedException();
+ if (person1Birthday.DayOfYear == person2Birthday.DayOfYear)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
}
}
}