123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- //
- // NSDate+YYAdd.h
- // YYKit <https://github.com/ibireme/YYKit>
- //
- // Created by ibireme on 13/4/11.
- // Copyright (c) 2015 ibireme.
- //
- // This source code is licensed under the MIT-style license found in the
- // LICENSE file in the root directory of this source tree.
- //
- #import <Foundation/Foundation.h>
- NS_ASSUME_NONNULL_BEGIN
- /**
- Provides extensions for `NSDate`.
- */
- @interface NSDate (YYAdd)
- #pragma mark - Component Properties
- ///=============================================================================
- /// @name Component Properties
- ///=============================================================================
- @property (nonatomic, readonly) NSInteger year; ///< Year component
- @property (nonatomic, readonly) NSInteger month; ///< Month component (1~12)
- @property (nonatomic, readonly) NSInteger day; ///< Day component (1~31)
- @property (nonatomic, readonly) NSInteger hour; ///< Hour component (0~23)
- @property (nonatomic, readonly) NSInteger minute; ///< Minute component (0~59)
- @property (nonatomic, readonly) NSInteger second; ///< Second component (0~59)
- @property (nonatomic, readonly) NSInteger nanosecond; ///< Nanosecond component
- @property (nonatomic, readonly) NSInteger weekday; ///< Weekday component (1~7, first day is based on user setting)
- @property (nonatomic, readonly) NSInteger weekdayOrdinal; ///< WeekdayOrdinal component
- @property (nonatomic, readonly) NSInteger weekOfMonth; ///< WeekOfMonth component (1~5)
- @property (nonatomic, readonly) NSInteger weekOfYear; ///< WeekOfYear component (1~53)
- @property (nonatomic, readonly) NSInteger yearForWeekOfYear; ///< YearForWeekOfYear component
- @property (nonatomic, readonly) NSInteger quarter; ///< Quarter component
- @property (nonatomic, readonly) BOOL isLeapMonth; ///< whether the month is leap month
- @property (nonatomic, readonly) BOOL isLeapYear; ///< whether the year is leap year
- @property (nonatomic, readonly) BOOL isToday; ///< whether date is today (based on current locale)
- @property (nonatomic, readonly) BOOL isYesterday; ///< whether date is yesterday (based on current locale)
- #pragma mark - Date modify
- ///=============================================================================
- /// @name Date modify
- ///=============================================================================
- /**
- Returns a date representing the receiver date shifted later by the provided number of years.
-
- @param years Number of years to add.
- @return Date modified by the number of desired years.
- */
- - (nullable NSDate *)dateByAddingYears:(NSInteger)years;
- /**
- Returns a date representing the receiver date shifted later by the provided number of months.
-
- @param months Number of months to add.
- @return Date modified by the number of desired months.
- */
- - (nullable NSDate *)dateByAddingMonths:(NSInteger)months;
- /**
- Returns a date representing the receiver date shifted later by the provided number of weeks.
-
- @param weeks Number of weeks to add.
- @return Date modified by the number of desired weeks.
- */
- - (nullable NSDate *)dateByAddingWeeks:(NSInteger)weeks;
- /**
- Returns a date representing the receiver date shifted later by the provided number of days.
-
- @param days Number of days to add.
- @return Date modified by the number of desired days.
- */
- - (nullable NSDate *)dateByAddingDays:(NSInteger)days;
- /**
- Returns a date representing the receiver date shifted later by the provided number of hours.
-
- @param hours Number of hours to add.
- @return Date modified by the number of desired hours.
- */
- - (nullable NSDate *)dateByAddingHours:(NSInteger)hours;
- /**
- Returns a date representing the receiver date shifted later by the provided number of minutes.
-
- @param minutes Number of minutes to add.
- @return Date modified by the number of desired minutes.
- */
- - (nullable NSDate *)dateByAddingMinutes:(NSInteger)minutes;
- /**
- Returns a date representing the receiver date shifted later by the provided number of seconds.
-
- @param seconds Number of seconds to add.
- @return Date modified by the number of desired seconds.
- */
- - (nullable NSDate *)dateByAddingSeconds:(NSInteger)seconds;
- #pragma mark - Date Format
- ///=============================================================================
- /// @name Date Format
- ///=============================================================================
- /**
- Returns a formatted string representing this date.
- see http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns
- for format description.
-
- @param format String representing the desired date format.
- e.g. @"yyyy-MM-dd HH:mm:ss"
-
- @return NSString representing the formatted date string.
- */
- - (nullable NSString *)stringWithFormat:(NSString *)format;
- /**
- Returns a formatted string representing this date.
- see http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns
- for format description.
-
- @param format String representing the desired date format.
- e.g. @"yyyy-MM-dd HH:mm:ss"
-
- @param timeZone Desired time zone.
-
- @param locale Desired locale.
-
- @return NSString representing the formatted date string.
- */
- - (nullable NSString *)stringWithFormat:(NSString *)format
- timeZone:(nullable NSTimeZone *)timeZone
- locale:(nullable NSLocale *)locale;
- /**
- Returns a string representing this date in ISO8601 format.
- e.g. "2010-07-09T16:13:30+12:00"
-
- @return NSString representing the formatted date string in ISO8601.
- */
- - (nullable NSString *)stringWithISOFormat;
- /**
- Returns a date parsed from given string interpreted using the format.
-
- @param dateString The string to parse.
- @param format The string's date format.
-
- @return A date representation of string interpreted using the format.
- If can not parse the string, returns nil.
- */
- + (nullable NSDate *)dateWithString:(NSString *)dateString format:(NSString *)format;
- /**
- Returns a date parsed from given string interpreted using the format.
-
- @param dateString The string to parse.
- @param format The string's date format.
- @param timeZone The time zone, can be nil.
- @param locale The locale, can be nil.
-
- @return A date representation of string interpreted using the format.
- If can not parse the string, returns nil.
- */
- + (nullable NSDate *)dateWithString:(NSString *)dateString
- format:(NSString *)format
- timeZone:(nullable NSTimeZone *)timeZone
- locale:(nullable NSLocale *)locale;
- /**
- Returns a date parsed from given string interpreted using the ISO8601 format.
-
- @param dateString The date string in ISO8601 format. e.g. "2010-07-09T16:13:30+12:00"
-
- @return A date representation of string interpreted using the format.
- If can not parse the string, returns nil.
- */
- + (nullable NSDate *)dateWithISOFormatString:(NSString *)dateString;
- @end
- NS_ASSUME_NONNULL_END
|