From 4f52b9c1a61a542a61953759b189d110686f272a Mon Sep 17 00:00:00 2001 From: Masha Date: Thu, 20 May 2021 00:09:47 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=97=D0=90=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdventureTime/AdventureTime/Program.cs | 12 +++++- .../AdventureTime/AdventureTime/Time.cs | 41 +++++++++++++------ 2 files changed, 40 insertions(+), 13 deletions(-) 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..3f101962 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("s"); /* Обязательно поиграйся и посмотри на изменение результата в зависимости от dt.Kind (для этого тебе поможет метод выше). Ну и на будущее запомни этот прекрасный строковый формат представления времени - он твой бро! Название запоминать не нужно, просто помни, что для передачи значения в виде строки, выбирать лучше инвариантные относительно сериализации/десериализации форматы. */ - throw new NotImplementedException(); + } /// @@ -61,11 +65,11 @@ Ну и на будущее запомни этот прекрасный стр /// Объект . public static DateTime ParseFromRoundTripFormat(string dtStr) { + return DateTime.Parse(dtStr); /* Поиграйся и проверь, что round-trip действительно round-trip, т.е. туда-обратно равно оригиналу (для туда воспользуйся предыдущим методом). Проверь для всех значений DateTime.Kind. */ - throw new NotImplementedException(); } /// @@ -73,11 +77,12 @@ Проверь для всех значений DateTime.Kind. /// 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; + } + } } } From c8ad0fa95f70da630b3c4a5c124c3508c2af98c7 Mon Sep 17 00:00:00 2001 From: Masha Date: Thu, 20 May 2021 00:14:08 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B1=D0=B0=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../02-adventure-time/AdventureTime/AdventureTime/Time.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 3f101962..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 @@ -49,7 +49,7 @@ public static DateTime SpecifyKind(DateTime dt, DateTimeKind kind) public static string ToRoundTripFormatString(DateTime dt) { - return dt.ToString("s"); + return dt.ToString("o"); /* Обязательно поиграйся и посмотри на изменение результата в зависимости от dt.Kind (для этого тебе поможет метод выше). Ну и на будущее запомни этот прекрасный строковый формат представления времени - он твой бро!