Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,28 @@
namespace AdventureTime
using System;

namespace AdventureTime
{
internal class Program
{
private static void Main()
{
Console.WriteLine("Current time:", Time.WhatTimeIsIt());
Console.WriteLine("Current UTC time:", Time.WhatTimeIsItInUtc());

DateTime time_now = Time.WhatTimeIsIt();
Console.WriteLine("Current time:", time_now);
Console.WriteLine("Current round-parsed time:", Time.ParseFromRoundTripFormat(Time.ToRoundTripFormatString(time_now)));

Console.WriteLine("Add ten seconds:", Time.AddTenSeconds(time_now));
Console.WriteLine("Add ten seconds v2:", Time.AddTenSeconds(time_now));
Console.WriteLine("Dumb", Time.GetAdventureTimeDurationInMinutes_ver0_Dumb());
Console.WriteLine("Dumb gender swapped", Time.GetGenderSwappedAdventureTimeDurationInMinutes_ver0_Dumb());

Console.WriteLine("Rocket science", Time.GetAdventureTimeDurationInMinutes_ver2_FeelsLikeRocketScience());
Console.WriteLine("Rocket science gender swapped", Time.GetGenderSwappedAdventureTimeDurationInMinutes_ver2_FeelsLikeRocketScience());

Console.WriteLine(Time.AreEqualBirthdays(new DateTime(2010, 3, 28, 2, 15, 0), new DateTime(2012, 3, 28, 2, 15, 0)));
Console.WriteLine(Time.AreEqualBirthdays(new DateTime(2010, 3, 27, 2, 15, 0), new DateTime(2012, 3, 28, 2, 15, 0)));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ internal static class Time
/// </summary>
public static DateTime WhatTimeIsIt()
{
throw new NotImplementedException();
return DateTime.Now;
}

/// <summary>
/// Возвращает текущее время в UTC.
/// </summary>
public static DateTime WhatTimeIsItInUtc()
{
throw new NotImplementedException();
return DateTime.UtcNow;
}

/// <summary>
Expand All @@ -36,7 +36,7 @@ public static DateTime SpecifyKind(DateTime dt, DateTimeKind kind)
/*
Подсказка: поищи в статических методах DateTime.
*/
throw new NotImplementedException();
return DateTime.SpecifyKind(dt, kind);
}

/// <summary>
Expand All @@ -51,7 +51,7 @@ Обязательно поиграйся и посмотри на измене
Ну и на будущее запомни этот прекрасный строковый формат представления времени - он твой бро!
Название запоминать не нужно, просто помни, что для передачи значения в виде строки, выбирать лучше инвариантные относительно сериализации/десериализации форматы.
*/
throw new NotImplementedException();
return dt.ToString("o");
}

/// <summary>
Expand All @@ -65,7 +65,7 @@ public static DateTime ParseFromRoundTripFormat(string dtStr)
Поиграйся и проверь, что round-trip действительно round-trip, т.е. туда-обратно равно оригиналу (для туда воспользуйся предыдущим методом).
Проверь для всех значений DateTime.Kind.
*/
throw new NotImplementedException();
return DateTime.Parse(dtStr);
}

/// <summary>
Expand All @@ -77,7 +77,8 @@ public static DateTime ToUtc(DateTime dt)
Eсли воспользуешься нужным методом, то напоминаю, что результат его работы зависит от dt.Kind.
В случае dt.Kind == Unspecified предполагается, что время локальное, т.е. результат работы в случае Local и Unspecified совпадают. Такие дела
*/
throw new NotImplementedException();

return SpecifyKind(dt, DateTimeKind.Utc);
}

/// <summary>
Expand All @@ -88,7 +89,7 @@ public static DateTime ToUtc(DateTime dt)
public static DateTime AddTenSeconds(DateTime dt)
{
// здесь воспользуйся методами самого объекта и заодно посмотри какие еще похожие есть
throw new NotImplementedException();
return dt.AddSeconds(10);
}

/// <summary>
Expand All @@ -102,7 +103,7 @@ public static DateTime AddTenSecondsV2(DateTime dt)
Ну а здесь воспользуйся сложением с TimeSpan. Обрати внимание, что помимо конструктора, у класса есть набор полезных статических методов-фабрик.
Обрати внимание, что у TimeSpan нет статических методов FromMonth, FromYear. Как думаешь, почему?
*/
throw new NotImplementedException();
return dt + new TimeSpan(0, 0, 10);
}

/// <summary>
Expand All @@ -118,7 +119,7 @@ public static int GetHoursBetween(DateTime dt1, DateTime dt2)
2) Проверь, учитывается ли Kind объектов при арифметических операциях.
3) Подумай, почему возвращаемое значение может отличаться от действительности.
*/
throw new NotImplementedException();
return (int) Math.Floor((dt2 - dt1).TotalHours);
}

/// <summary>
Expand All @@ -127,7 +128,7 @@ public static int GetHoursBetween(DateTime dt1, DateTime dt2)
public static int GetTotalMinutesInThreeMonths()
{
// ну тут все просто и очевидно, если сделал остальные и подумал над вопросами в комментах.
throw new NotImplementedException();
return (int) (new TimeSpan(90, 0, 0, 0, 0)).TotalMinutes;
}

#region Adventure time saga
Expand All @@ -147,7 +148,9 @@ public static int GetAdventureTimeDurationInMinutes_ver0_Dumb()
Держи, заготовочку для копипасты:
- 2010, 3, 28, 2, 15, 0
*/
throw new NotImplementedException();
DateTimeOffset Moscow = new DateTimeOffset(2010, 3, 28, 2, 15, 0, TimeSpan.FromHours(3));
DateTimeOffset London = new DateTimeOffset(2010, 3, 28, 2, 15, 0, TimeSpan.FromHours(0));
return (int) (London - Moscow).TotalMinutes;
}

/// <summary>
Expand All @@ -165,7 +168,9 @@ public static int GetGenderSwappedAdventureTimeDurationInMinutes_ver0_Dumb()
- 2010, 3, 28, 3, 15, 0
- 2010, 3, 28, 1, 15, 0
*/
throw new NotImplementedException();
DateTimeOffset Moscow = new DateTimeOffset(2010, 3, 28, 3, 15, 0, TimeSpan.FromHours(3));
DateTimeOffset London = new DateTimeOffset(2010, 3, 28, 1, 15, 0, TimeSpan.FromHours(0));
return (int) (London - Moscow).TotalMinutes;
}

/// <summary>
Expand All @@ -180,7 +185,9 @@ Внимательный читатель мог усомниться в дан
На самом деле смещения таковы: Лондон +1 (BST - British Summer Time), Москва +4 (MSD - Moscow Daylight Time).
Давай теперь учтем правильное смещение. Я понимаю, что это очевидно, что результат не изменится, но тебе же не сложно скопипастить и просто поменять смещения?
*/
throw new NotImplementedException();
DateTimeOffset Moscow = new DateTimeOffset(2010, 3, 28, 3, 15, 0, TimeSpan.FromHours(4));
DateTimeOffset London = new DateTimeOffset(2010, 3, 28, 1, 15, 0, TimeSpan.FromHours(1));
return (int) (London - Moscow).TotalMinutes;
}

// GetGenderSwappedAdventureTimeDurationInMinutes_ver1_FeelsSmarter опустим, там то же самое
Expand All @@ -205,7 +212,9 @@ ниже ты найдешь готовый метод GetZonedTime. Прост
const string moscowZoneId = "Russian Standard Time";
const string londonZoneId = "GMT Standard Time";

throw new NotImplementedException();
DateTimeOffset Moscow = GetZonedTime(new DateTime(2010, 3, 28, 2, 15, 0), moscowZoneId);
DateTimeOffset London = GetZonedTime(new DateTime(2010, 3, 28, 2, 15, 0), londonZoneId);
return (int) (London - Moscow).TotalMinutes;
}

/// <summary>
Expand All @@ -218,7 +227,10 @@ public static int GetGenderSwappedAdventureTimeDurationInMinutes_ver2_FeelsLikeR
*/
const string moscowZoneId = "Russian Standard Time";
const string londonZoneId = "GMT Standard Time";
throw new NotImplementedException();

DateTimeOffset Moscow = GetZonedTime(new DateTime(2010, 3, 28, 3, 15, 0), moscowZoneId);
DateTimeOffset London = GetZonedTime(new DateTime(2010, 3, 28, 1, 15, 0), londonZoneId);
return (int) (London - Moscow).TotalMinutes;
}

private static DateTimeOffset GetZonedTime(DateTime localTime, string timeZoneId)
Expand Down Expand Up @@ -277,7 +289,7 @@ private static ZonedDateTime GetZonedTime(LocalDateTime localTime, string timeZo
/// <returns>True - если родились в один день, иначе - false.</returns>
internal static bool AreEqualBirthdays(DateTime person1Birthday, DateTime person2Birthday)
{
throw new NotImplementedException();
return person1Birthday.DayOfYear == person2Birthday.DayOfYear;
}
}
}