Skip to content

Commit

Permalink
Converted from int to CalendarType taking into account daylight saving
Browse files Browse the repository at this point in the history
Converted from int to CalendarType taking into account daylight saving
  • Loading branch information
malcommac committed Oct 29, 2015
1 parent e303511 commit 3f103e4
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 56 deletions.
8 changes: 5 additions & 3 deletions ExampleProject/ExampleProject/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6211" systemVersion="14A298i" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9059" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6204"/>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9049"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="target" sceneMemberID="viewController">
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="ExampleProject" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<animations/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
Expand Down
9 changes: 2 additions & 7 deletions ExampleProject/ExampleProject/ViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,13 @@ class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()

print(NSDate())
print(NSDate().weekOfMonth)

return

let date = NSDate()

_ = date.toString(format: DateFormat.Custom("YYYY-MM-DD"))


_ = date+1.days
let two_months_ago = (date-2.months)!
let two_months_ago = (date-2.months)
print(two_months_ago.toLongDateString())


Expand All @@ -36,7 +31,7 @@ class ViewController: UIViewController {
print(date_as_utc.toLongTimeString())
print(date_as_beijing?.toLongTimeString())

let d = (NSDate()-1.hours)!
let d = (NSDate()-1.hours)

print(d.year)

Expand Down
154 changes: 108 additions & 46 deletions SwiftDate/SwiftDate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1257,52 +1257,54 @@ public prefix func - (dateComponents: NSDateComponents) -> NSDateComponents {
// MARK: - Helpers to enable expressions e.g. date + 1.days - 20.seconds

public extension Int {
var nanoseconds: NSDateComponents {
let dateComponents = NSDateComponents()
dateComponents.nanosecond = self
return dateComponents
}
var seconds: NSDateComponents {
let dateComponents = NSDateComponents()
dateComponents.second = self
return dateComponents
}

var minutes: NSDateComponents {
let dateComponents = NSDateComponents()
dateComponents.minute = self
return dateComponents
}

var hours: NSDateComponents {
let dateComponents = NSDateComponents()
dateComponents.hour = self
return dateComponents
}

var days: NSDateComponents {
let dateComponents = NSDateComponents()
dateComponents.day = self
return dateComponents
}

var weeks: NSDateComponents {
let dateComponents = NSDateComponents()
dateComponents.weekOfYear = self
return dateComponents
}

var months: NSDateComponents {
let dateComponents = NSDateComponents()
dateComponents.month = self
return dateComponents
}

var years: NSDateComponents {
let dateComponents = NSDateComponents()
dateComponents.year = self
return dateComponents
}
var seconds : NSTimeInterval {
return NSTimeInterval(self)
}
var second : NSTimeInterval {
return (self.seconds)
}
var minutes : MinuteCalendarType {
return MinuteCalendarType(amount: self)
}
var minute : MinuteCalendarType {
return self.minutes
}
var hours : HourCalendarType {
return HourCalendarType(amount: self)
}
var hour : HourCalendarType {
return self.hours
}
var days : DayCalendarType {
return DayCalendarType(amount: self)
}
var day : DayCalendarType {
return self.days
}
var weeks : DayCalendarType {
return (self*7).days
}
var week : DayCalendarType {
return self.weeks
}
var workWeeks : DayCalendarType {
return (self*5).days
}
var workWeek : DayCalendarType {
return self.workWeeks
}
var months : MonthCalendarType {
return MonthCalendarType(amount: self)
}
var month : MonthCalendarType {
return self.months
}
var years : YearCalendarType {
return YearCalendarType(amount: self)
}
var year : YearCalendarType {
return self.years
}
}


Expand Down Expand Up @@ -1374,6 +1376,66 @@ public class CalendarType {
}
}

public class MinuteCalendarType : CalendarType {

override init(amount : Int) {
super.init(amount: amount)
self.calendarUnit = NSCalendarUnit.Minute
}

override func dateComponents() -> NSDateComponents {
let components = super.dateComponents()
components.minute = self.amount
return components
}

override func copy() -> MinuteCalendarType {
let objCopy = MinuteCalendarType(amount: self.amount)
objCopy.calendarUnit = self.calendarUnit
return objCopy;
}
}

public class HourCalendarType : CalendarType {

override init(amount : Int) {
super.init(amount: amount)
self.calendarUnit = NSCalendarUnit.Hour
}

override func dateComponents() -> NSDateComponents {
let components = super.dateComponents()
components.hour = self.amount
return components
}

override func copy() -> HourCalendarType {
let objCopy = HourCalendarType(amount: self.amount)
objCopy.calendarUnit = self.calendarUnit
return objCopy;
}
}

public class DayCalendarType : CalendarType {

override init(amount : Int) {
super.init(amount: amount)
self.calendarUnit = NSCalendarUnit.Day
}

override func dateComponents() -> NSDateComponents {
let components = super.dateComponents()
components.day = self.amount
return components
}

override func copy() -> DayCalendarType {
let objCopy = DayCalendarType(amount: self.amount)
objCopy.calendarUnit = self.calendarUnit
return objCopy;
}
}

public class MonthCalendarType : CalendarType {

override init(amount : Int) {
Expand Down

0 comments on commit 3f103e4

Please sign in to comment.