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,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));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,16 @@ 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 @@ -33,10 +34,11 @@ public static DateTime WhatTimeIsItInUtc()
/// <returns>Объект <see cref="DateTime"/> с заданными временем и значением <see cref="DateTime.Kind"/>.</returns>
public static DateTime SpecifyKind(DateTime dt, DateTimeKind kind)
{
return DateTime.SpecifyKind(dt, kind);
/*
Подсказка: поищи в статических методах DateTime.
*/
throw new NotImplementedException();

}

/// <summary>
Expand All @@ -46,12 +48,14 @@ public static DateTime SpecifyKind(DateTime dt, DateTimeKind kind)
/// <returns>Строковое представление времени в формате ISO 8601.</returns>
public static string ToRoundTripFormatString(DateTime dt)
{

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

}

/// <summary>
Expand All @@ -61,23 +65,24 @@ Ну и на будущее запомни этот прекрасный стр
/// <returns>Объект <see cref="DateTime"/>.</returns>
public static DateTime ParseFromRoundTripFormat(string dtStr)
{
return DateTime.Parse(dtStr);
/*
Поиграйся и проверь, что round-trip действительно round-trip, т.е. туда-обратно равно оригиналу (для туда воспользуйся предыдущим методом).
Проверь для всех значений DateTime.Kind.
*/
throw new NotImplementedException();
}

/// <summary>
/// Преобразует значение текущего объекта <see cref="DateTime"/> во время UTC.
/// </summary>
public static DateTime ToUtc(DateTime dt)
{

return dt.ToUniversalTime();
/*
Eсли воспользуешься нужным методом, то напоминаю, что результат его работы зависит от dt.Kind.
В случае dt.Kind == Unspecified предполагается, что время локальное, т.е. результат работы в случае Local и Unspecified совпадают. Такие дела
*/
throw new NotImplementedException();
}

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

/// <summary>
Expand All @@ -98,11 +103,12 @@ public static DateTime AddTenSeconds(DateTime dt)
/// <returns>Время, передвинутое вперед на 10 секунд от заданного</returns>
public static DateTime AddTenSecondsV2(DateTime dt)
{
return dt + TimeSpan.FromSeconds(10);

/*
Ну а здесь воспользуйся сложением с TimeSpan. Обрати внимание, что помимо конструктора, у класса есть набор полезных статических методов-фабрик.
Обрати внимание, что у TimeSpan нет статических методов FromMonth, FromYear. Как думаешь, почему?
*/
throw new NotImplementedException();
}

/// <summary>
Expand All @@ -113,21 +119,24 @@ public static DateTime AddTenSecondsV2(DateTime dt)
/// <returns>Полное количество часов заданного временного отрезка.</returns>
public static int GetHoursBetween(DateTime dt1, DateTime dt2)
{
return (int)(dt2 - dt1).TotalHours;

/*
1) Подумай, в чем разница между Hours и TotalHours
2) Проверь, учитывается ли Kind объектов при арифметических операциях.
3) Подумай, почему возвращаемое значение может отличаться от действительности.
*/
throw new NotImplementedException();
}

/// <summary>
/// Возвращает количество минут во временном промежутке, равном трем месяцам.
/// </summary>
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
Expand Down Expand Up @@ -277,7 +286,15 @@ private static ZonedDateTime GetZonedTime(LocalDateTime localTime, string timeZo
/// <returns>True - если родились в один день, иначе - false.</returns>
internal static bool AreEqualBirthdays(DateTime person1Birthday, DateTime person2Birthday)
{
throw new NotImplementedException();
if (person1Birthday.DayOfYear == person2Birthday.DayOfYear)
{
return true;
}
else
{
return false;
}

}
}
}