Advertisement
yahorrr

Untitled

Oct 11th, 2022
984
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.92 KB | None | 0 0
  1. namespace TimeStruct
  2. {
  3.     /// <summary>
  4.     /// Represents the times in 24-hours format without date.
  5.     /// </summary>
  6.     public struct Time
  7.     {
  8.         /// <summary>
  9.         /// Initializes a new instance of the <see cref="Time"/> struct.
  10.         /// </summary>
  11.         /// <param name="minutes">Minutes.</param>
  12.         public Time(int minutes)
  13.             : this(0, minutes)
  14.         {
  15.         }
  16.  
  17.         /// <summary>
  18.         /// Initializes a new instance of the <see cref="Time"/> struct.
  19.         /// </summary>
  20.         /// <param name="hours">Hours.</param>
  21.         /// <param name="minutes">Minutes.</param>
  22.         public Time(int hours, int minutes)
  23.         {
  24.             this.Hours = (hours - ((minutes / 60) % 24)) >= 0 ? (hours + (minutes / 60)) % 24 : 24 + ((hours - (minutes / 60)) % 24);
  25.             this.Minutes = minutes >= 0 ? minutes % 60 : 60 - (minutes % 60);
  26.         }
  27.  
  28.         /// <summary>
  29.         /// Gets hours.
  30.         /// </summary>
  31.         public int Hours { get; }
  32.  
  33.         /// <summary>
  34.         /// Gets minutes.
  35.         /// </summary>
  36.         public int Minutes { get; }
  37.  
  38.         /// <summary>
  39.         /// Returns string representation of <see cref="Time"/>.
  40.         /// </summary>
  41.         /// <param name="hours">Hours.</param>
  42.         /// <param name="minutes">Minutes.</param>
  43.         /// <returns>String of form "hours:minutes".</returns>
  44.         public override string ToString()
  45.         {
  46.             return $"{this.Hours:D2}:{this.Minutes:D2}";
  47.         }
  48.  
  49.         /// <summary>
  50.         /// Deconstructs <see cref="Time"/> into <paramref name="hours"/> and <paramref name="minutes"/>.
  51.         /// </summary>
  52.         /// <param name="hours">Hours.</param>
  53.         /// <param name="minutes">Minutes.</param>
  54.         public void Deconstruct(out int hours, out int minutes)
  55.         {
  56.             hours = this.Hours;
  57.             minutes = this.Minutes;
  58.         }
  59.     }
  60. }
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement