Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace TimeStruct
- {
- /// <summary>
- /// Represents the times in 24-hours format without date.
- /// </summary>
- public struct Time
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Time"/> struct.
- /// </summary>
- /// <param name="minutes">Minutes.</param>
- public Time(int minutes)
- : this(0, minutes)
- {
- }
- /// <summary>
- /// Initializes a new instance of the <see cref="Time"/> struct.
- /// </summary>
- /// <param name="hours">Hours.</param>
- /// <param name="minutes">Minutes.</param>
- public Time(int hours, int minutes)
- {
- this.Hours = (hours - ((minutes / 60) % 24)) >= 0 ? (hours + (minutes / 60)) % 24 : 24 + ((hours - (minutes / 60)) % 24);
- this.Minutes = minutes >= 0 ? minutes % 60 : 60 - (minutes % 60);
- }
- /// <summary>
- /// Gets hours.
- /// </summary>
- public int Hours { get; }
- /// <summary>
- /// Gets minutes.
- /// </summary>
- public int Minutes { get; }
- /// <summary>
- /// Returns string representation of <see cref="Time"/>.
- /// </summary>
- /// <param name="hours">Hours.</param>
- /// <param name="minutes">Minutes.</param>
- /// <returns>String of form "hours:minutes".</returns>
- public override string ToString()
- {
- return $"{this.Hours:D2}:{this.Minutes:D2}";
- }
- /// <summary>
- /// Deconstructs <see cref="Time"/> into <paramref name="hours"/> and <paramref name="minutes"/>.
- /// </summary>
- /// <param name="hours">Hours.</param>
- /// <param name="minutes">Minutes.</param>
- public void Deconstruct(out int hours, out int minutes)
- {
- hours = this.Hours;
- minutes = this.Minutes;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement