NSDate简单介绍
一:NSDate是一个日期\时间方面的类,主要用来创建\获取时间
1.NSDate对象的创建:
date 创建一个当前系统日期和时间的对象
dateWithTimeIntervalSinceNow: 创建距离当前时间戳的对象
dateWithTimeInterval:sinceDate: 创建距离日期和时间对象的时间戳的对象
dateWithTimeIntervalSince1970: 创建距离1970年的时间戳对象
这里简单阐述下时间戳:时间戳的字面意思就是唯一的标识某一刻的时间,比如:2016年4月27日17点54分30秒,这就是我写这句话的时间戳
简单来说:就是从指定时间开始的那一秒数(楼主自己的理解)
2.类方法:
distantFuture 获取很久以后的日期对象
distantPast 获取很久以前的日期对象
3.日期时间比较:
isEqualToDate: 比较日期时间是否相等
earlierDate: 较早的那个日期时间
laterDate: 较晚的那个日期时间
compare: 时间先后
4.获取时间戳
timeIntervalSinceDate: 获取到指定日期时间的时间戳
timeIntervalSinceNow: 获取到现在的时间戳
timeIntervalSince1970: 获取从1970年到指定日期的时间戳
5.在日期时间对象上增加时间戳:
dateByAddingTimeInterval:返回新NSDate对象
二.代码
1.创建日期:
//创建一个日期时间对象
NSDate *nowDate = [NSDate date];
// 时区
//2015-07-20 08:08:40 +0000
// + 8
NSLog(@"date = %@",nowDate);
//2)日期时间的格式化显示
// NSDateFormatter 类完成
NSDateFormatter *formatter = [NSDateFormatter new];
// 指定了显示的格式
// formatter.dateFormat 可以赋值一个字符串,字符串就是我们要显示的格
formatter.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒";
/* y 表示年
yyyy 表示显示4位的年 2015
MM 表示月份(两位M表示不足两位补0)
dd 表示天数 HH 以24小时制显示 小时
hh 以12小时制小时
mm 显示分钟
ss 显示秒数
*/
//用指定的格式对我们的 nowDate进行格式化
// 把date 转换为字符串
// 按照我们指定的格式进行转换
NSString *dateStr = [formatter stringFromDate:nowDate];
NSLog(@"dataStr = %@",dateStr); //计算日期
// 当前日期
NSDate *date = [NSDate date];
NSTimeInterval time = **; //24小时的秒数
//明天的此刻
NSDate *mt = [date dateByAddingTimeInterval:time];
NSDateFormatter *formatter0 = [NSDateFormatter new];
// 指定了显示的格式
// formatter.dateFormat 可以赋值一个字符串,字符串就是我们要显示的格式
formatter0.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒";
NSString *timeStr = [formatter stringFromDate:mt];
NSLog(@"timeStr = %@",timeStr);
NSTimeInterval time1 = **; //24小时的秒数
//昨天的现在
NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:time1];
NSDateFormatter *formatter1 = [NSDateFormatter new];
// 指定了显示的格式
// formatter.dateFormat 可以赋值一个字符串,字符串就是我们要显示的格式
formatter1.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒";
NSString *timeStr1 = [formatter stringFromDate:date1];
NSLog(@"timeStr = %@",timeStr1); // 例:
//刚才返回的 2015年07月19日 16时29分16秒 字符串?
//假设 我要去获取日期的 年份 月份 天数
//NSCalendar 可以帮我们分解日期的每一部分
//创建日期时间对象
NSCalendar *cal = [NSCalendar currentCalendar]; //获取当前日期的每一部分 要获取的部分 从哪个日期对象
NSDateComponents *coms = [cal components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:[NSDate date]]; NSLog(@"------%ld,-----%ld,----%ld",coms.year,coms.month,coms.day);
2.打印结果:
-- ::08.182 NADate[:] date = -- :: +
-- ::08.183 NADate[:] dataStr = 2016年04月27日 18时16分08秒
-- ::08.183 NADate[:] timeStr = 2016年04月28日 18时16分08秒
-- ::08.183 NADate[:] timeStr = 2016年04月28日 18时16分08秒
-- ::08.184 NADate[:] ------,-----,----
Program ended with exit code:
3.日期格式化:
//
// main.m
// NADate
//
// Created by admin on 16/4/27.
// Copyright © 2016年 admin. All rights reserved.
// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建日期时间格式化对象
NSDateFormatter *df = [[NSDateFormatter alloc] init]; // 查看时区
NSArray *arr = [NSTimeZone knownTimeZoneNames];
NSLog(@"%@",arr); df.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Chongqing"]; //设置格式化内容
df.dateFormat = @"yyyy-MM-dd HH:mm:ss"; // 把字符串转换成日期对象
NSDate *date = [df dateFromString:@"2005-08-30 08:00:00"];
NSLog(@"%@",date);
// 把日期对象转换成字符串
NSDate *nowDate = [NSDate date];
NSString *string= [df stringFromDate:nowDate];
NSLog(@"%@",string); //创建日历对象
// NSCalendar *calendar1 = [NSCalendar currentCalendar];
// NSCalendar *calendar2 = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierChinese];
// NSLog(@"%@",calendar1.calendarIdentifier);
// NSLog(@"%@",calendar2.calendarIdentifier); //地区标识
// NSArray *arr1 = [NSLocale availableLocaleIdentifiers];
// NSLog(@"%@",arr1); //
NSCalendar *cl = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierChinese];
//设置地区
cl.locale = [NSLocale localeWithLocaleIdentifier:@"zh_CN"];
//设置时区
cl.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Chongqing"];
//设置每周起始
cl.firstWeekday = ;
//获取年月日
NSDate *now = [NSDate date];
NSInteger month,day;
//获取年月日的方法(NSCalendar的对象方法)
[cl getEra:nil year:nil month:&month day:&day fromDate:now];
NSLog(@"%ld月%ld日\n",month,day);
4.打印结果:
-- ::03.929 NADate[:] (
"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/Fort_Nelson",
"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/Chita",
"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/Srednekolymsk",
"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/Bougainville",
"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"
)
-- ::04.393 NADate[:] -- :: +
-- ::04.393 NADate[:] -- ::
-- ::04.394 NADate[:] 3月21日
Program ended with exit code:
打印结果中的数组,是时区代码
从430行开始是日期打印结果
三.注意
NSDate比较简单,大致分为两个步骤:1.创建日期 2.日期格式化(显示成什么格式)
还有一个需要注意的地方:
如果在打印的过程中,发现获取的时间与当前时间相差8个小时,不要担心,那是正常的,因为程序默认时间是美国时间.加上8个小时就好了.
希望能帮到需要的人,如果有什么不对的,请直接告诉我,我会用最短的时间改正.谢谢~