iOS time-related classes
- NSDate-Represents an absolute point in time.
- Nscalendar-Represents a specific calendar, such as the Gregorian or Hebrew calendar. It provides a series of date-based calculations and allows you to convert between "NSDate" and "nsdatecomponents" objects.
- Nsdatecomponents-Allows you to get a specific content of date, such as hours, minutes, years, days, and so on.
- Nstimezone-Represents a specific time zone information that can help compute tasks across time zones.
Code Analysis
Say less nonsense, Show me the Code
/**
* Calendar
*/
//Gregorian calendar
NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSCalendarIdentifierGregorian];
NSDate * date = [NSDate new];
NSLog (@ "% ld-% ld-% ld",
[calendar component: NSCalendarUnitYear fromDate: date],
[calendar component: NSCalendarUnitMonth fromDate: date],
[calendar component: NSCalendarUnitDay fromDate: date]);
// Gregorian calendar: 2018-5-9
//Buddhist calendar
calendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSCalendarIdentifierBuddhist];
NSLog (@ "% ld-% ld-% ld",
[calendar component: NSCalendarUnitYear fromDate: date],
[calendar component: NSCalendarUnitMonth fromDate: date],
[calendar component: NSCalendarUnitDay fromDate: date]);
// Buddhist calendar: 2561-5-9
// Japanese calendar
calendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSCalendarIdentifierJapanese];
NSLog (@ "% ld-% ld-% ld",
[calendar component: NSCalendarUnitYear fromDate: date],
[calendar component: NSCalendarUnitMonth fromDate: date],
[calendar component: NSCalendarUnitDay fromDate: date]);
// Japanese calendar: 30-5-9
/**
* Region
*/
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle: NSDateFormatterLongStyle];
[dateFormatter setTimeStyle: NSDateFormatterLongStyle];
NSString * formattedDateString = [dateFormatter stringFromDate: date];
NSLog (@ "Default Locale Formatted Date:% @", formattedDateString);
// The system is a Gregorian calendar: Default Locale Formatted Date: 9 May 2018 at 4:25:06 PM GMT + 8
// The system is a Buddhist calendar: Default Locale Formatted Date: 9 May 2561 BE at 4:21:29 PM GMT + 8
// Chinese Locale
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier: @ "zh_CN"];
formattedDateString = [dateFormatter stringFromDate: date];
NSLog (@ "ZH Locale Formatted Date:% @", formattedDateString);
// ZH Locale Formatted Date: May 9, 2018 GMT + 8 PM 4:21:29 PM
/**
* Time zone
*/
dateFormatter.timeZone = [NSTimeZone timeZoneWithName: @ "GMT"];
formattedDateString = [dateFormatter stringFromDate: date];
NSLog (@ "GMT Timezone Formatted Date:% @", formattedDateString);
// GMT Timezone Formatted Date: May 9, 2018 GMT 8:21:29 AM
/**
* NSDateComponents
*/
// Yearless date
NSDateComponents * components = [[NSDateComponents alloc] init];
[components setMonth: 11];
[components setDay: 7];
NSCalendar * gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier: NSCalendarIdentifierGregorian];
NSDate * birthday = [gregorian dateFromComponents: components];
formattedDateString = [dateFormatter stringFromDate: birthday];
NSLog (@ "GMT Timezone Formatted Date:% @", formattedDateString);
// GMT Timezone Formatted Date: November 6, 1st GMT 3:54:17 PM
Javascript
A Date object about JavaScript can refer to the following links:
Understanding Date and Time in JavaScript
JavaScript Date Objects
Get Date Property
const birthday = new Date(1980, 6, 31);
birthday.getFullYear(); // 1980
birthday.getMonth(); // 6
birthday.getDate(); // 31
birthday.getDay(); // 4
birthday.getHours(); // 0
birthday.getMinutes(); // 0
birthday.getSeconds(); // 0
birthday.getMilliseconds(); // 0
birthday.getTime(); // 333849600000 (for GMT)
Date formatting
var options = { weekday: ‘long‘, year: ‘numeric‘, month: ‘long‘, day: ‘numeric‘ }; var today = new Date();
today.toLocaleDateString("en-US"); // 5/9/2018
today.toLocaleDateString("en-US",options); // Wednesday, May 9, 2018
today.toLocaleDateString("hi-IN", options); // ??????, 9 ?? 2018
Moment.js
Moment.js-parse, validate, manipulate, and display dates and times in JavaScript. Moment is a very powerful JavaScript time-and-date library that is a good extension of native objects.
//Format
moment().format(‘MMMM Do YYYY, h:mm:ss a‘); // May 9th 2018, 8:05:15 pm //Calendar Time
moment().add(10, ‘days‘).calendar(); //Multiple Locale Support
moment.locale(); // en //TimeZone var jun = moment("2014-06-01T12:00:00Z"); var dec = moment("2014-12-01T12:00:00Z");
jun.tz(‘America/Los_Angeles‘).format(‘ha z‘); // 5am PDT
dec.tz(‘America/Los_Angeles‘).format(‘ha z‘); // 4am PST
There is also a newer, more modern time-date library: Luxon, you can try it.
An article thoroughly understand iOS, JS time and date (date, Calendar, Locale, TimeZone)