add all api to sort by month

This commit is contained in:
Michael Simard
2020-06-14 21:46:44 -05:00
parent 6b9e9a4c35
commit 842abb0895
162 changed files with 34480 additions and 71 deletions

View File

@@ -0,0 +1,96 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public typealias Calendars = Calendar.Identifier
public protocol CalendarConvertible {
func toCalendar() -> Calendar
}
extension Calendar: CalendarConvertible {
public func toCalendar() -> Calendar {
return self
}
internal static func newCalendar(_ calendar: CalendarConvertible, configure: ((inout Calendar) -> Void)? = nil) -> Calendar {
var cal = calendar.toCalendar()
configure?(&cal)
return cal
}
}
extension Calendar.Identifier: CalendarConvertible {
public func toCalendar() -> Calendar {
return Calendar(identifier: self)
}
}
// MARK: - Support for Calendar.Identifier encoding with Codable
extension Calendar.Identifier: CustomStringConvertible {
public var description: String {
switch self {
case .gregorian: return "gregorian"
case .buddhist: return "buddhist"
case .chinese: return "chinese"
case .coptic: return "coptic"
case .ethiopicAmeteMihret: return "ethiopicAmeteMihret"
case .ethiopicAmeteAlem: return "ethiopicAmeteAlem"
case .hebrew: return "hebrew"
case .iso8601: return "iso8601"
case .indian: return "indian"
case .islamic: return "islamic"
case .islamicCivil: return "islamicCivil"
case .japanese: return "japanese"
case .persian: return "persian"
case .republicOfChina: return "republicOfChina"
case .islamicTabular: return "islamicTabular"
case .islamicUmmAlQura: return "islamicUmmAlQura"
@unknown default:
fatalError("Unsupported calendar \(self)")
}
}
public init(_ rawValue: String) {
switch rawValue {
case Calendar.Identifier.gregorian.description: self = .gregorian
case Calendar.Identifier.buddhist.description: self = .buddhist
case Calendar.Identifier.chinese.description: self = .chinese
case Calendar.Identifier.coptic.description: self = .coptic
case Calendar.Identifier.ethiopicAmeteMihret.description: self = .ethiopicAmeteMihret
case Calendar.Identifier.ethiopicAmeteAlem.description: self = .ethiopicAmeteAlem
case Calendar.Identifier.hebrew.description: self = .hebrew
case Calendar.Identifier.iso8601.description: self = .iso8601
case Calendar.Identifier.indian.description: self = .indian
case Calendar.Identifier.islamic.description: self = .islamic
case Calendar.Identifier.islamicCivil.description: self = .islamicCivil
case Calendar.Identifier.japanese.description: self = .japanese
case Calendar.Identifier.persian.description: self = .persian
case Calendar.Identifier.republicOfChina.description: self = .republicOfChina
case Calendar.Identifier.islamicTabular.description: self = .islamicTabular
case Calendar.Identifier.islamicTabular.description: self = .islamicTabular
case Calendar.Identifier.islamicUmmAlQura.description: self = .islamicUmmAlQura
default:
let defaultCalendar = SwiftDate.defaultRegion.calendar.identifier
debugPrint("Calendar Identifier '\(rawValue)' not recognized. Using default (\(defaultCalendar))")
self = defaultCalendar
}
}
}