diff options
| author | ivar <i@oiee.no> | 2026-05-06 21:01:10 +0200 |
|---|---|---|
| committer | ivar <i@oiee.no> | 2026-05-06 21:01:10 +0200 |
| commit | 01eee1c4fe8252bffc9334e4bb2dbbc15f002835 (patch) | |
| tree | dba40ea6312844c66183043058cfead8b0a5c9d3 /Shared/Models/SolsticeEvent.swift | |
| parent | 7328b2e18121d3047ac142eaf0c8b048933d17dc (diff) | |
| download | solverv-01eee1c4fe8252bffc9334e4bb2dbbc15f002835.tar.xz solverv-01eee1c4fe8252bffc9334e4bb2dbbc15f002835.zip | |
feat: add Shared/ folder with merged source files
Diffstat (limited to 'Shared/Models/SolsticeEvent.swift')
| -rw-r--r-- | Shared/Models/SolsticeEvent.swift | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Shared/Models/SolsticeEvent.swift b/Shared/Models/SolsticeEvent.swift new file mode 100644 index 0000000..b28cba8 --- /dev/null +++ b/Shared/Models/SolsticeEvent.swift @@ -0,0 +1,34 @@ +import Foundation + +struct SolsticeEvent: Identifiable, Codable { + let id: UUID + let name: String + let date: Date + let season: Season + + init(name: String, date: Date, season: Season) { + self.id = UUID() + self.name = name + self.date = date + self.season = season + } + + func localDateTime() -> Date { + let utcCalendar = Calendar(identifier: .gregorian) + let utcComponents = utcCalendar.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date) + let timeZone = TimeZone.current + let offset = timeZone.secondsFromGMT(for: date) + var localCalendar = Calendar.current + localCalendar.timeZone = timeZone + var localComponents = utcComponents + localComponents.second = (localComponents.second ?? 0) + offset + return localCalendar.date(from: localComponents) ?? date + } + + func daysUntil(from now: Date = Date()) -> Int { + let today = Calendar.current.startOfDay(for: now) + let eventDay = Calendar.current.startOfDay(for: date) + let components = Calendar.current.dateComponents([.day], from: today, to: eventDay) + return max(0, components.day ?? 0) + } +} |
