Introduction
NVDate is an extension of NSDate class (Swift4), created to make date and time manipulation easier.
Features
- Has lot of API function to make date and time manipulation easier and fun
- Has user friendly naming convention
- NVDate functions are chainable
- Very easy to use
- Open Source!
Installation
Using Cocoa Pods
Swift4
Add these into your Podfile:
pod 'NVDate', '2.0.1'Then import NVdate into your swift file.
import NVDateObjective-C
Add these into your Podfile:
pod 'NVDate', '1.0.0'Then import NVdate.h into your .h or .m file.
#import "NVDate.h"Simple Example
Today date as string
let date = NVDate()
print(date.asString())
// ==> Wednesday, February 5, 2014, 4:56:35 PM Western Indonesia TimeDate 2018/05/25 as string
let date = NVDate(fromString: "2018/05/25", withFormat: "yyyy/MM/dd")
print(date.asString())
// ==> Friday, May 25, 2018, 00:00:00 AM Western Indonesia TimeLast day of next 2 months
let date = NVDate()
    .nextMonths(diff: 2)
    .lastDayOfMonth()
print(date.asString(withFormat: "dd-MM-yyyy"))
// ==> 30-04-2014Second week of 2 months ago
let date = NVDate()
    .previousMonths(diff: 2)
    .firstDayOfMonth()
    .nextWeek()
date.dateFormat(setFormat: "yyyy-MM-dd HH:mm:ss")
print(date.asString())
// ==> 2013-12-08 17:03:36Detect if 2018/05/25 is friday
let todayIsFriday = NVDate(year: 2018, month: 5, day: 25)
    .previousDay()
    .isTodayName(.friday)
print(todayIsFriday)
// ==> falseDot syntax
let someday = NVDate()
    .previousDay()
    .previousWeek()
    .nextDay()
    .asString()
print(someday)
// ==> 2013-12-08 17:03:36API Documentation
Initialization
| Initialization | Description | 
|---|---|
| NVDate() | Today date is used as date value | 
| NVDate(fromString:withFormat:) | Use specified date string as date value. Format of specified date string has to be explicitly defined. | 
| NVDate(year:month:day:) | Construct new date using year, month, and day | 
| NVDate(year:month:day:hour:minute:second:) | Construct new date using year, month, day, hour, minute, second | 
| NVDate(fromDate: Date) | use specified date as value | 
Methods
| Method | Description | 
|---|---|
| date() | return the date object | 
| asString() | return string formatted of date object | 
| asString(withFormat:) | return formatted string value of date object. the format has to be defined explicitly | 
| setTimeAsZero() | set hour, minute, and second as 0 | 
| dateFormat() | return the current date format. the format is used on asString() | 
| dateFormat(setFormat:) | change current date format. the format is used on asString() | 
| dateStyle() | return the date style of current formatter | 
| dateStyle(setStyle:) | change date style of current formatter | 
| timeStyle() | return the time style of current formatter | 
| timeStyle(setStyle:) | change time style of current formatter | 
| timeZone() | return current timezone value | 
| timeZone(setTimeZone:) | change the timezone value | 
| nextDays(days:) | move to next x days | 
| nextDay() | move to next day | 
| tomorrow() | alias of nextDay() | 
| previousDays(days:) | move to previous x days | 
| previousDay() | move to previous day | 
| yesterday() | alias of previousDay() | 
| nextWeek() | move to next week | 
| nextWeeks(diff:) | move to next x weeks | 
| previousWeek() | move to previous week | 
| previousWeeks(diff:) | move to previous x weeks | 
| nextMonth() | move to next month | 
| nextMonths(diff:) | move to next x months | 
| previousMonth() | move to previous month | 
| previousMonths(diff:) | move to previous x months | 
| nextYear() | move to next year | 
| nextYears(diff:) | move to next x years | 
| previousYear() | move to previous year | 
| previousYears(diff:) | move to previous x years | 
| firstDayOfMonth() | move to first day of current month | 
| lastDayOfMonth() | move to last day of current month | 
| firstMonthOfYear() | move to first month of current year | 
| lastMonthOfYear() | move to last month of current year | 
| nearestPreviousDay(_:) | move to x previous day that name equal to NVDate.DayName | 
| nearestNextDay(_:) | move to x next day that name equal to NVDate.DayName | 
| thisDayName() | get today day name, in type NVDate.DayName | 
| todayName() | alias of thisDayName() | 
| isThisDayName(_:) | return true if specified day name is equal with day on the object | 
| isTodayName(_:) | alias of isThisDayName(_:) | 
| thisMonthName() | get this month name, in type NVDate.MonthName | 
| isThisMonthName(_:) | return true if specified month name is equal with month on the object | 
| year() | return year value | 
| year(setYear:) | change year value | 
| month() | return month value | 
| month(setMonth:) | change month value | 
| weekOfYear() | return week of year value | 
| weekOfMonth() | return week of month value | 
| day() | return day value | 
| day(setDay:) | change day value | 
| hour() | return hour value | 
| hour(setHour:) | change hour value | 
| minute() | return minute value | 
| minute(setMinute:) | change minute value | 
| second() | return second value | 
| second(setSecond:) | change second value | 
Contribution
Feel free to contribute by doing fork -> pull request