// ~~~~~~ ReferenceDate: 2001-01-01 00:00:00 +0000
// ~~~~~~ distantFuture: 4001-01-01 00:00:00 +0000
// ~~~~~~ distantPast: 0001-12-30 00:00:00 +0000
NSLocale *zhCN = [NSLocale currentLocale]; //先获取当前的时区
NSDate *aDate = [NSDate date]; //获取当前的时间
NSString *dateDes =[aDate descriptionWithLocale:zhCN];//描述日期 时区是当前的时区zhCN
NSLog(@"%@",dateDes); //输出必须是字符串
/*
- (NSTimeInterval)timeIntervalSinceReferenceDate;
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;
- (NSTimeInterval)timeIntervalSinceNow;
- (NSTimeInterval)timeIntervalSince1970;
- (id)addTimeInterval:(NSTimeInterval)seconds NS_DEPRECATED(10_0, 10_6, 2_0, 4_0);
- (id)dateByAddingTimeInterval:(NSTimeInterval)ti NS_AVAILABLE(10_6, 2_0);
- (NSDate *)earlierDate:(NSDate *)anotherDate;
- (NSDate *)laterDate:(NSDate *)anotherDate;
- (NSComparisonResult)compare:(NSDate *)other;
- (BOOL)isEqualToDate:(NSDate *)otherDate;
- (NSString *)description;
- (NSString *)descriptionWithLocale:(id)locale;
+ (NSTimeInterval)timeIntervalSinceReferenceDate;
+ (instancetype)date;
+ (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
+ (instancetype)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti;
+ (instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
+ (instancetype)dateWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date;
+ (id )distantFuture;
+ (id )distantPast;
- (instancetype)init;
- (instancetype)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti;
- (instancetype)initWithTimeIntervalSinceNow:(NSTimeInterval)secs;
- (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)secs;
- (instancetype)initWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date;
*/
// ~~~~~~ ReferenceDate: 2001-01-01 00:00:00 +0000
// ~~~~~~ distantFuture: 4001-01-01 00:00:00 +0000
// ~~~~~~ distantPast: 0001-12-30 00:00:00 +0000
NSDate *adate = [NSDate date];
/*
// adate = [NSDate dateWithTimeIntervalSinceNow:60];
// adate =[NSDate dateWithTimeIntervalSinceReferenceDate:60];
// adate = [NSDate dateWithTimeIntervalSince1970:60];
// adate =[NSDate distantFuture];
// adate = [NSDate distantPast];
// adate = [adate dateByAddingTimeInterval:-3600*24];
// adate = [[NSDate alloc]initWithTimeIntervalSinceReferenceDate:60];
// bdate = [NSDate dateWithTimeInterval:3600 sinceDate:adate];
// if ([adate isEqualToDate:bdate]){ NSLog(@"两个时间一样");} else{NSLog(@"两个时间不同");}
// NSDate *cdate =[adate earlierDate:bdate];
// cdate = [adate laterDate:bdate];
// NSComparisonResult result = [adate compare:bdate];
*/
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
//系统时区
// NSTimeZone *zone = [NSTimeZone systemTimeZone];
// NSData *adata = [zone data];
// // 时区缩写
// NSString *abbStr = [zone abbreviationForDate:adate];
// NSLog(@"abbStr:%@",abbStr); //GMT+8
//当地时区
// NSTimeZone *localTime = [NSTimeZone localTimeZone];
// NSLog(@"localTime:%@",localTime); //Local Time Zone (Asia/Shanghai (GMT+8) offset 28800)
// //和格林尼治时间差
// NSInteger timeOff = [zone secondsFromGMT];
// NSLog(@"%ld",timeOff); //28800
// //时差转化
// NSDate *timeOffDate = [adate dateByAddingTimeInterval:timeOff];
// NSLog(@"timeOffDate:%@",timeOffDate);
// //所有地区名称
// NSArray *zoneArrs = [NSTimeZone knownTimeZoneNames];
// NSLog(@"zoneArrs:%@",zoneArrs);
/*
// zoneArrs:(
// "Africa/Abidjan",
// "Africa/Accra",
// "Africa/Addis_Ababa",
// "Africa/Algiers",
// "Africa/Asmara",
// "Africa/Bamako",
// "Africa/Bangui",
// "Africa/Banjul",
// "Africa/Bissau",
// "Africa/Blantyre",
// "Africa/Brazzaville",
// "Africa/Bujumbura",
// "Africa/Cairo",
// "Africa/Casablanca",
// "Africa/Ceuta",
// "Africa/Conakry",
// "Africa/Dakar",
// "Africa/Dar_es_Salaam",
// "Africa/Djibouti",
// "Africa/Douala",
// "Africa/El_Aaiun",
// "Africa/Freetown",
// "Africa/Gaborone",
// "Africa/Harare",
// "Africa/Johannesburg",
// "Africa/Juba",
// "Africa/Kampala",
// "Africa/Khartoum",
// "Africa/Kigali",
// "Africa/Kinshasa",
// "Africa/Lagos",
// "Africa/Libreville",
// "Africa/Lome",
// "Africa/Luanda",
// "Africa/Lubumbashi",
// "Africa/Lusaka",
// "Africa/Malabo",
// "Africa/Maputo",
// "Africa/Maseru",
// "Africa/Mbabane",
// "Africa/Mogadishu",
// "Africa/Monrovia",
// "Africa/Nairobi",
// "Africa/Ndjamena",
// "Africa/Niamey",
// "Africa/Nouakchott",
// "Africa/Ouagadougou",
// "Africa/Porto-Novo",
// "Africa/Sao_Tome",
// "Africa/Tripoli",
// "Africa/Tunis",
// "Africa/Windhoek",
// "America/Adak",
// "America/Anchorage",
// "America/Anguilla",
// "America/Antigua",
// "America/Araguaina",
// "America/Argentina/Buenos_Aires",
// "America/Argentina/Catamarca",
// "America/Argentina/Cordoba",
// "America/Argentina/Jujuy",
// "America/Argentina/La_Rioja",
// "America/Argentina/Mendoza",
// "America/Argentina/Rio_Gallegos",
// "America/Argentina/Salta",
// "America/Argentina/San_Juan",
// "America/Argentina/San_Luis",
// "America/Argentina/Tucuman",
// "America/Argentina/Ushuaia",
// "America/Aruba",
// "America/Asuncion",
// "America/Atikokan",
// "America/Bahia",
// "America/Bahia_Banderas",
// "America/Barbados",
// "America/Belem",
// "America/Belize",
// "America/Blanc-Sablon",
// "America/Boa_Vista",
// "America/Bogota",
// "America/Boise",
// "America/Cambridge_Bay",
// "America/Campo_Grande",
// "America/Cancun",
// "America/Caracas",
// "America/Cayenne",
// "America/Cayman",
// "America/Chicago",
// "America/Chihuahua",
// "America/Costa_Rica",
// "America/Creston",
// "America/Cuiaba",
// "America/Curacao",
// "America/Danmarkshavn",
// "America/Dawson",
// "America/Dawson_Creek",
// "America/Denver",
// "America/Detroit",
// "America/Dominica",
// "America/Edmonton",
// "America/Eirunepe",
// "America/El_Salvador",
// "America/Fortaleza",
// "America/Glace_Bay",
// "America/Godthab",
// "America/Goose_Bay",
// "America/Grand_Turk",
// "America/Grenada",
// "America/Guadeloupe",
// "America/Guatemala",
// "America/Guayaquil",
// "America/Guyana",
// "America/Halifax",
// "America/Havana",
// "America/Hermosillo",
// "America/Indiana/Indianapolis",
// "America/Indiana/Knox",
// "America/Indiana/Marengo",
// "America/Indiana/Petersburg",
// "America/Indiana/Tell_City",
// "America/Indiana/Vevay",
// "America/Indiana/Vincennes",
// "America/Indiana/Winamac",
// "America/Inuvik",
// "America/Iqaluit",
// "America/Jamaica",
// "America/Juneau",
// "America/Kentucky/Louisville",
// "America/Kentucky/Monticello",
// "America/Kralendijk",
// "America/La_Paz",
// "America/Lima",
// "America/Los_Angeles",
// "America/Lower_Princes",
// "America/Maceio",
// "America/Managua",
// "America/Manaus",
// "America/Marigot",
// "America/Martinique",
// "America/Matamoros",
// "America/Mazatlan",
// "America/Menominee",
// "America/Merida",
// "America/Metlakatla",
// "America/Mexico_City",
// "America/Miquelon",
// "America/Moncton",
// "America/Monterrey",
// "America/Montevideo",
// "America/Montreal",
// "America/Montserrat",
// "America/Nassau",
// "America/New_York",
// "America/Nipigon",
// "America/Nome",
// "America/Noronha",
// "America/North_Dakota/Beulah",
// "America/North_Dakota/Center",
// "America/North_Dakota/New_Salem",
// "America/Ojinaga",
// "America/Panama",
// "America/Pangnirtung",
// "America/Paramaribo",
// "America/Phoenix",
// "America/Port-au-Prince",
// "America/Port_of_Spain",
// "America/Porto_Velho",
// "America/Puerto_Rico",
// "America/Rainy_River",
// "America/Rankin_Inlet",
// "America/Recife",
// "America/Regina",
// "America/Resolute",
// "America/Rio_Branco",
// "America/Santa_Isabel",
// "America/Santarem",
// "America/Santiago",
// "America/Santo_Domingo",
// "America/Sao_Paulo",
// "America/Scoresbysund",
// "America/Shiprock",
// "America/Sitka",
// "America/St_Barthelemy",
// "America/St_Johns",
// "America/St_Kitts",
// "America/St_Lucia",
// "America/St_Thomas",
// "America/St_Vincent",
// "America/Swift_Current",
// "America/Tegucigalpa",
// "America/Thule",
// "America/Thunder_Bay",
// "America/Tijuana",
// "America/Toronto",
// "America/Tortola",
// "America/Vancouver",
// "America/Whitehorse",
// "America/Winnipeg",
// "America/Yakutat",
// "America/Yellowknife",
// "Antarctica/Casey",
// "Antarctica/Davis",
// "Antarctica/DumontDUrville",
// "Antarctica/Macquarie",
// "Antarctica/Mawson",
// "Antarctica/McMurdo",
// "Antarctica/Palmer",
// "Antarctica/Rothera",
// "Antarctica/South_Pole",
// "Antarctica/Syowa",
// "Antarctica/Troll",
// "Antarctica/Vostok",
// "Arctic/Longyearbyen",
// "Asia/Aden",
// "Asia/Almaty",
// "Asia/Amman",
// "Asia/Anadyr",
// "Asia/Aqtau",
// "Asia/Aqtobe",
// "Asia/Ashgabat",
// "Asia/Baghdad",
// "Asia/Bahrain",
// "Asia/Baku",
// "Asia/Bangkok",
// "Asia/Beirut",
// "Asia/Bishkek",
// "Asia/Brunei",
// "Asia/Choibalsan",
// "Asia/Chongqing",
// "Asia/Colombo",
// "Asia/Damascus",
// "Asia/Dhaka",
// "Asia/Dili",
// "Asia/Dubai",
// "Asia/Dushanbe",
// "Asia/Gaza",
// "Asia/Harbin",
// "Asia/Hebron",
// "Asia/Ho_Chi_Minh",
// "Asia/Hong_Kong",
// "Asia/Hovd",
// "Asia/Irkutsk",
// "Asia/Jakarta",
// "Asia/Jayapura",
// "Asia/Jerusalem",
// "Asia/Kabul",
// "Asia/Kamchatka",
// "Asia/Karachi",
// "Asia/Kashgar",
// "Asia/Kathmandu",
// "Asia/Katmandu",
// "Asia/Khandyga",
// "Asia/Kolkata",
// "Asia/Krasnoyarsk",
// "Asia/Kuala_Lumpur",
// "Asia/Kuching",
// "Asia/Kuwait",
// "Asia/Macau",
// "Asia/Magadan",
// "Asia/Makassar",
// "Asia/Manila",
// "Asia/Muscat",
// "Asia/Nicosia",
// "Asia/Novokuznetsk",
// "Asia/Novosibirsk",
// "Asia/Omsk",
// "Asia/Oral",
// "Asia/Phnom_Penh",
// "Asia/Pontianak",
// "Asia/Pyongyang",
// "Asia/Qatar",
// "Asia/Qyzylorda",
// "Asia/Rangoon",
// "Asia/Riyadh",
// "Asia/Sakhalin",
// "Asia/Samarkand",
// "Asia/Seoul",
// "Asia/Shanghai",
// "Asia/Singapore",
// "Asia/Taipei",
// "Asia/Tashkent",
// "Asia/Tbilisi",
// "Asia/Tehran",
// "Asia/Thimphu",
// "Asia/Tokyo",
// "Asia/Ulaanbaatar",
// "Asia/Urumqi",
// "Asia/Ust-Nera",
// "Asia/Vientiane",
// "Asia/Vladivostok",
// "Asia/Yakutsk",
// "Asia/Yekaterinburg",
// "Asia/Yerevan",
// "Atlantic/Azores",
// "Atlantic/Bermuda",
// "Atlantic/Canary",
// "Atlantic/Cape_Verde",
// "Atlantic/Faroe",
// "Atlantic/Madeira",
// "Atlantic/Reykjavik",
// "Atlantic/South_Georgia",
// "Atlantic/St_Helena",
// "Atlantic/Stanley",
// "Australia/Adelaide",
// "Australia/Brisbane",
// "Australia/Broken_Hill",
// "Australia/Currie",
// "Australia/Darwin",
// "Australia/Eucla",
// "Australia/Hobart",
// "Australia/Lindeman",
// "Australia/Lord_Howe",
// "Australia/Melbourne",
// "Australia/Perth",
// "Australia/Sydney",
// "Europe/Amsterdam",
// "Europe/Andorra",
// "Europe/Athens",
// "Europe/Belgrade",
// "Europe/Berlin",
// "Europe/Bratislava",
// "Europe/Brussels",
// "Europe/Bucharest",
// "Europe/Budapest",
// "Europe/Busingen",
// "Europe/Chisinau",
// "Europe/Copenhagen",
// "Europe/Dublin",
// "Europe/Gibraltar",
// "Europe/Guernsey",
// "Europe/Helsinki",
// "Europe/Isle_of_Man",
// "Europe/Istanbul",
// "Europe/Jersey",
// "Europe/Kaliningrad",
// "Europe/Kiev",
// "Europe/Lisbon",
// "Europe/Ljubljana",
// "Europe/London",
// "Europe/Luxembourg",
// "Europe/Madrid",
// "Europe/Malta",
// "Europe/Mariehamn",
// "Europe/Minsk",
// "Europe/Monaco",
// "Europe/Moscow",
// "Europe/Oslo",
// "Europe/Paris",
// "Europe/Podgorica",
// "Europe/Prague",
// "Europe/Riga",
// "Europe/Rome",
// "Europe/Samara",
// "Europe/San_Marino",
// "Europe/Sarajevo",
// "Europe/Simferopol",
// "Europe/Skopje",
// "Europe/Sofia",
// "Europe/Stockholm",
// "Europe/Tallinn",
// "Europe/Tirane",
// "Europe/Uzhgorod",
// "Europe/Vaduz",
// "Europe/Vatican",
// "Europe/Vienna",
// "Europe/Vilnius",
// "Europe/Volgograd",
// "Europe/Warsaw",
// "Europe/Zagreb",
// "Europe/Zaporozhye",
// "Europe/Zurich",
// GMT,
// "Indian/Antananarivo",
// "Indian/Chagos",
// "Indian/Christmas",
// "Indian/Cocos",
// "Indian/Comoro",
// "Indian/Kerguelen",
// "Indian/Mahe",
// "Indian/Maldives",
// "Indian/Mauritius",
// "Indian/Mayotte",
// "Indian/Reunion",
// "Pacific/Apia",
// "Pacific/Auckland",
// "Pacific/Chatham",
// "Pacific/Chuuk",
// "Pacific/Easter",
// "Pacific/Efate",
// "Pacific/Enderbury",
// "Pacific/Fakaofo",
// "Pacific/Fiji",
// "Pacific/Funafuti",
// "Pacific/Galapagos",
// "Pacific/Gambier",
// "Pacific/Guadalcanal",
// "Pacific/Guam",
// "Pacific/Honolulu",
// "Pacific/Johnston",
// "Pacific/Kiritimati",
// "Pacific/Kosrae",
// "Pacific/Kwajalein",
// "Pacific/Majuro",
// "Pacific/Marquesas",
// "Pacific/Midway",
// "Pacific/Nauru",
// "Pacific/Niue",
// "Pacific/Norfolk",
// "Pacific/Noumea",
// "Pacific/Pago_Pago",
// "Pacific/Palau",
// "Pacific/Pitcairn",
// "Pacific/Pohnpei",
// "Pacific/Ponape",
// "Pacific/Port_Moresby",
// "Pacific/Rarotonga",
// "Pacific/Saipan",
// "Pacific/Tahiti",
// "Pacific/Tarawa",
// "Pacific/Tongatapu",
// "Pacific/Truk",
// "Pacific/Wake",
// "Pacific/Wallis"
*/
// //遍历时区 输出时间
// for (NSString *names in zoneArrs)
// {
// //时区
// NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:names];
// //设置格式
// NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// [dateFormatter setDateStyle:kCFDateFormatterFullStyle];
// [dateFormatter setTimeZone:timeZone];
// NSString *string = [dateFormatter stringFromDate:adate];
// NSLog(@"string:%@,[timeZone name]:%@",string,[timeZone name]);
// [dateFormatter release];
// [timeZone release];
// }
NSLocale *local = [[NSLocale alloc]initWithLocaleIdentifier:@"zhCN"];
[formatter setLocale:local];
[formatter setAMSymbol:@"AM"];
[formatter setPMSymbol:@"PM"];
[formatter setDateStyle:NSDateFormatterFullStyle];
[formatter setTimeStyle:NSDateFormatterFullStyle];
[formatter setDateFormat:@"G yyyy yyy yy MMMM MMM MM DD dd d EEEE EEE HH H K hh mm m ss s SSS"];
// NSDateFormatterNoStyle = kCFDateFormatterNoStyle,
// NSDateFormatterShortStyle = kCFDateFormatterShortStyle,
// NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,
// NSDateFormatterLongStyle = kCFDateFormatterLongStyle,
// NSDateFormatterFullStyle = kCFDateFormatterFullStyle
/*
// January February March April May June
// July August September October November December
// Monday Tuesday Wednesday Thursday Friday Saturday Sunday
G: 公元时代,例如AD公元
yyyy/yyy: 完整年 yy: 年的后2位
MMMM: 如 九月 MMM: 如 9月 MM: 显示为09
dd: 天 如 02 d: 天 1-2位显示,如 2
EEEE: 如Sunday EEE: 如Sun
aa: AM/PM
HH/H: 时,24小时制,0-23
K:时,12小时制,0-11
mm: 分,2位 m: 分,1-2位
ss: 秒,2位 s: 秒,1-2位
SSS: 毫秒
*/
NSString *currentDate = [formatter stringFromDate:adate];
NSLog(@"格式输出:%@",currentDate);
//NSCalendar 通过 NSDateComponents从NSCalendar中获取日期的组成部分
NSCalendar *calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
/*
NSString * const NSGregorianCalendar;
NSString * const NSBuddhistCalendar;
NSString * const NSChineseCalendar;
NSString * const NSHebrewCalendar;
NSString * const NSIslamicCalendar;
NSString * const NSIslamicCivilCalendar;
NSString * const NSJapaneseCalendar;
NSString * const NSRepublicOfChinaCalendar;
NSString * const NSPersianCalendar;
NSString * const NSIndianCalendar;
NSString * const NSISO8601Calendar;
*/
NSDateComponents *dateComponents = [[NSDateComponents alloc]init];
//从已知的NSDate对象中获取compents的属性
dateComponents = [calendar components:NSYearCalendarUnit |NSMonthCalendarUnit|NSDayCalendarUnit fromDate:adate];
//手动设置 NSDateComponents
dateComponents.year = 2022;
dateComponents.month = 10;
dateComponents.day = 23;
dateComponents.hour = 22;
dateComponents.minute = 30;
dateComponents.second = 59;
adate = [calendar dateFromComponents:dateComponents];
NSLog(@"%@",adate);