wip
This commit is contained in:
@@ -1,103 +0,0 @@
|
||||
//
|
||||
// Date+Extensions.swift
|
||||
// Feels (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/19/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
extension Date: RawRepresentable {
|
||||
public var rawValue: String {
|
||||
self.timeIntervalSinceReferenceDate.description
|
||||
}
|
||||
|
||||
public init?(rawValue: String) {
|
||||
self = Date(timeIntervalSinceReferenceDate: Double(rawValue) ?? 0.0)
|
||||
}
|
||||
|
||||
var startOfDay: Date {
|
||||
return Calendar.current.startOfDay(for: self)
|
||||
}
|
||||
|
||||
var startOfMonth: Date {
|
||||
|
||||
let calendar = Calendar(identifier: .gregorian)
|
||||
let components = calendar.dateComponents([.year, .month], from: self)
|
||||
|
||||
return calendar.date(from: components)!
|
||||
}
|
||||
|
||||
var endOfDay: Date {
|
||||
var components = DateComponents()
|
||||
components.day = 1
|
||||
components.second = -1
|
||||
return Calendar.current.date(byAdding: components, to: startOfDay)!
|
||||
}
|
||||
|
||||
var endOfMonth: Date {
|
||||
var components = DateComponents()
|
||||
components.month = 1
|
||||
components.second = -1
|
||||
return Calendar(identifier: .gregorian).date(byAdding: components, to: startOfMonth)!
|
||||
}
|
||||
|
||||
func toLocalTime() -> Date {
|
||||
let timezone = TimeZone.current
|
||||
let seconds = TimeInterval(timezone.secondsFromGMT(for: self))
|
||||
return Date(timeInterval: seconds, since: self)
|
||||
}
|
||||
|
||||
var weekday: Int {
|
||||
Calendar.current.component(.weekday, from: self)
|
||||
}
|
||||
|
||||
var firstDayOfTheMonth: Date {
|
||||
Calendar.current.dateComponents([.calendar, .year,.month], from: self).date!
|
||||
}
|
||||
|
||||
static public func dates(from fromDate: Date, toDate: Date, includingToDate: Bool = false) -> [Date] {
|
||||
var dates: [Date] = []
|
||||
var date = Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: fromDate)!
|
||||
let toDate = Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: toDate)!
|
||||
|
||||
if includingToDate {
|
||||
while date <= toDate {
|
||||
dates.append(date)
|
||||
guard let newDate = Calendar.current.date(byAdding: .day, value: 1, to: date) else { break }
|
||||
date = newDate
|
||||
}
|
||||
} else {
|
||||
while date < toDate {
|
||||
dates.append(date)
|
||||
guard let newDate = Calendar.current.date(byAdding: .day, value: 1, to: date) else { break }
|
||||
date = newDate
|
||||
}
|
||||
}
|
||||
|
||||
return dates
|
||||
}
|
||||
|
||||
static func dateRange(monthInt: Int, yearInt: Int) -> (startDate: Date, endDate: Date) {
|
||||
var dateComponents = DateComponents()
|
||||
dateComponents.year = yearInt
|
||||
dateComponents.month = monthInt
|
||||
dateComponents.day = 3
|
||||
dateComponents.hour = 12
|
||||
var userCalendar = Calendar(identifier: .gregorian)
|
||||
userCalendar.timeZone = TimeZone(secondsFromGMT: 0)!
|
||||
let someDateTime = userCalendar.date(from: dateComponents)!
|
||||
|
||||
let startDate = someDateTime.startOfMonth
|
||||
var endDate = someDateTime.endOfMonth
|
||||
endDate = Calendar.current.date(byAdding: .hour, value: -8, to: endDate)!
|
||||
|
||||
return (startDate, endDate)
|
||||
}
|
||||
|
||||
func formattedDate() -> String {
|
||||
let dateFormatter = DateFormatter()
|
||||
dateFormatter.dateFormat = "MMM dd, yyyy"
|
||||
return dateFormatter.string(from: self)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user