Skip to content

Instantly share code, notes, and snippets.

@johnhatvani
Last active March 15, 2023 10:12
Show Gist options
  • Save johnhatvani/a85de2484bdb2c593064 to your computer and use it in GitHub Desktop.
Save johnhatvani/a85de2484bdb2c593064 to your computer and use it in GitHub Desktop.
Swift Playground #1 adding components to Date using operator overloading.
import Foundation
extension Int{
var day: (Int, Calendar.Component) {
return (self, .day)
}
var month: (Int, Calendar.Component) {
return (self, .month)
}
var year: (Int, Calendar.Component) {
return (self, .year)
}
}
////
public func + (date: Date, tuple: (value: Int, unit: Calendar.Component)) -> Date {
return Calendar.current.date(byAdding: tuple.unit, value: tuple.value, to: date)!
}
public func - (date: Date, tuple: (value: Int, unit: Calendar.Component)) -> Date {
return Calendar.current.date(byAdding: tuple.unit, value: (-tuple.value), to: date)!
}
public func += (date: inout Date, tuple: (value: Int, unit: Calendar.Component)) {
date = Calendar.current.date(byAdding: tuple.unit, value: tuple.value, to: date)!
}
public func -= (date: inout Date, tuple: (value: Int, unit: Calendar.Component)) {
date = Calendar.current.date(byAdding: tuple.unit, value: (-tuple.value), to: date)!
}
var tomorrow = Date() + 1.year
tomorrow += 1.day
var yesterday = Date() - 1.day
yesterday -= 1.year
@stevestevensonneds
Copy link

This is the worst code I've ever seen

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment