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.创建日期:
1 //创建一个日期时间对象 2 NSDate *nowDate = [NSDate date]; 3 // 时区 4 //2015-07-20 08:08:40 +0000 5 // + 8 6 NSLog(@"date = %@",nowDate); 7 //2)日期时间的格式化显示 8 // NSDateFormatter 类完成 9 NSDateFormatter *formatter = [NSDateFormatter new]; 10 // 指定了显示的格式 11 // formatter.dateFormat 可以赋值一个字符串,字符串就是我们要显示的格 12 formatter.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒"; 13 /* 14 15 y 表示年 16 yyyy 表示显示4位的年 2015 17 MM 表示月份(两位M表示不足两位补0) 18 dd 表示天数 19 20 HH 以24小时制显示 小时 21 hh 以12小时制小时 22 mm 显示分钟 23 ss 显示秒数 24 */ 25 //用指定的格式对我们的 nowDate进行格式化 26 // 把date 转换为字符串 27 // 按照我们指定的格式进行转换 28 NSString *dateStr = [formatter stringFromDate:nowDate]; 29 NSLog(@"dataStr = %@",dateStr); 30 31 //计算日期 32 // 当前日期 33 NSDate *date = [NSDate date]; 34 NSTimeInterval time = 60*60*24; //24小时的秒数 35 //明天的此刻 36 NSDate *mt = [date dateByAddingTimeInterval:time]; 37 NSDateFormatter *formatter0 = [NSDateFormatter new]; 38 // 指定了显示的格式 39 // formatter.dateFormat 可以赋值一个字符串,字符串就是我们要显示的格式 40 formatter0.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒"; 41 NSString *timeStr = [formatter stringFromDate:mt]; 42 NSLog(@"timeStr = %@",timeStr); 43 NSTimeInterval time1 = 60*60*24; //24小时的秒数 44 //昨天的现在 45 NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:time1]; 46 NSDateFormatter *formatter1 = [NSDateFormatter new]; 47 // 指定了显示的格式 48 // formatter.dateFormat 可以赋值一个字符串,字符串就是我们要显示的格式 49 formatter1.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒"; 50 NSString *timeStr1 = [formatter stringFromDate:date1]; 51 NSLog(@"timeStr = %@",timeStr1); 52 53 // 例: 54 //刚才返回的 2015年07月19日 16时29分16秒 字符串? 55 //假设 我要去获取日期的 年份 月份 天数 56 //NSCalendar 可以帮我们分解日期的每一部分 57 //创建日期时间对象 58 NSCalendar *cal = [NSCalendar currentCalendar]; 59 60 //获取当前日期的每一部分 要获取的部分 从哪个日期对象 61 NSDateComponents *coms = [cal components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:[NSDate date]]; 62 63 NSLog(@"------%ld,-----%ld,----%ld",coms.year,coms.month,coms.day);
2.打印结果:
1 2016-04-27 18:16:08.182 NADate[11660:455237] date = 2016-04-27 10:16:08 +0000 2 2016-04-27 18:16:08.183 NADate[11660:455237] dataStr = 2016年04月27日 18时16分08秒 3 2016-04-27 18:16:08.183 NADate[11660:455237] timeStr = 2016年04月28日 18时16分08秒 4 2016-04-27 18:16:08.183 NADate[11660:455237] timeStr = 2016年04月28日 18时16分08秒 5 2016-04-27 18:16:08.184 NADate[11660:455237] ------2016,-----4,----27 6 Program ended with exit code: 0
3.日期格式化:
1 // 2 // main.m 3 // NADate 4 // 5 // Created by admin on 16/4/27. 6 // Copyright © 2016年 admin. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 int main(int argc, const char * argv[]) { 12 @autoreleasepool { 13 //创建日期时间格式化对象 14 NSDateFormatter *df = [[NSDateFormatter alloc] init]; 15 16 17 // 查看时区 18 NSArray *arr = [NSTimeZone knownTimeZoneNames]; 19 NSLog(@"%@",arr); 20 21 22 df.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Chongqing"]; 23 24 //设置格式化内容 25 df.dateFormat = @"yyyy-MM-dd HH:mm:ss"; 26 27 // 把字符串转换成日期对象 28 NSDate *date = [df dateFromString:@"2005-08-30 08:00:00"]; 29 NSLog(@"%@",date); 30 // 把日期对象转换成字符串 31 NSDate *nowDate = [NSDate date]; 32 NSString *string= [df stringFromDate:nowDate]; 33 NSLog(@"%@",string); 34 35 //创建日历对象 36 // NSCalendar *calendar1 = [NSCalendar currentCalendar]; 37 // NSCalendar *calendar2 = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierChinese]; 38 // NSLog(@"%@",calendar1.calendarIdentifier); 39 // NSLog(@"%@",calendar2.calendarIdentifier); 40 41 //地区标识 42 // NSArray *arr1 = [NSLocale availableLocaleIdentifiers]; 43 // NSLog(@"%@",arr1); 44 45 // 46 NSCalendar *cl = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierChinese]; 47 //设置地区 48 cl.locale = [NSLocale localeWithLocaleIdentifier:@"zh_CN"]; 49 //设置时区 50 cl.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Chongqing"]; 51 //设置每周起始 52 cl.firstWeekday = 2; 53 //获取年月日 54 NSDate *now = [NSDate date]; 55 NSInteger month,day; 56 //获取年月日的方法(NSCalendar的对象方法) 57 [cl getEra:nil year:nil month:&month day:&day fromDate:now]; 58 NSLog(@"%ld月%ld日 ",month,day);
4.打印结果:
1 2016-04-27 18:26:03.929 NADate[11684:458251] ( 2 "Africa/Abidjan", 3 "Africa/Accra", 4 "Africa/Addis_Ababa", 5 "Africa/Algiers", 6 "Africa/Asmara", 7 "Africa/Bamako", 8 "Africa/Bangui", 9 "Africa/Banjul", 10 "Africa/Bissau", 11 "Africa/Blantyre", 12 "Africa/Brazzaville", 13 "Africa/Bujumbura", 14 "Africa/Cairo", 15 "Africa/Casablanca", 16 "Africa/Ceuta", 17 "Africa/Conakry", 18 "Africa/Dakar", 19 "Africa/Dar_es_Salaam", 20 "Africa/Djibouti", 21 "Africa/Douala", 22 "Africa/El_Aaiun", 23 "Africa/Freetown", 24 "Africa/Gaborone", 25 "Africa/Harare", 26 "Africa/Johannesburg", 27 "Africa/Juba", 28 "Africa/Kampala", 29 "Africa/Khartoum", 30 "Africa/Kigali", 31 "Africa/Kinshasa", 32 "Africa/Lagos", 33 "Africa/Libreville", 34 "Africa/Lome", 35 "Africa/Luanda", 36 "Africa/Lubumbashi", 37 "Africa/Lusaka", 38 "Africa/Malabo", 39 "Africa/Maputo", 40 "Africa/Maseru", 41 "Africa/Mbabane", 42 "Africa/Mogadishu", 43 "Africa/Monrovia", 44 "Africa/Nairobi", 45 "Africa/Ndjamena", 46 "Africa/Niamey", 47 "Africa/Nouakchott", 48 "Africa/Ouagadougou", 49 "Africa/Porto-Novo", 50 "Africa/Sao_Tome", 51 "Africa/Tripoli", 52 "Africa/Tunis", 53 "Africa/Windhoek", 54 "America/Adak", 55 "America/Anchorage", 56 "America/Anguilla", 57 "America/Antigua", 58 "America/Araguaina", 59 "America/Argentina/Buenos_Aires", 60 "America/Argentina/Catamarca", 61 "America/Argentina/Cordoba", 62 "America/Argentina/Jujuy", 63 "America/Argentina/La_Rioja", 64 "America/Argentina/Mendoza", 65 "America/Argentina/Rio_Gallegos", 66 "America/Argentina/Salta", 67 "America/Argentina/San_Juan", 68 "America/Argentina/San_Luis", 69 "America/Argentina/Tucuman", 70 "America/Argentina/Ushuaia", 71 "America/Aruba", 72 "America/Asuncion", 73 "America/Atikokan", 74 "America/Bahia", 75 "America/Bahia_Banderas", 76 "America/Barbados", 77 "America/Belem", 78 "America/Belize", 79 "America/Blanc-Sablon", 80 "America/Boa_Vista", 81 "America/Bogota", 82 "America/Boise", 83 "America/Cambridge_Bay", 84 "America/Campo_Grande", 85 "America/Cancun", 86 "America/Caracas", 87 "America/Cayenne", 88 "America/Cayman", 89 "America/Chicago", 90 "America/Chihuahua", 91 "America/Costa_Rica", 92 "America/Creston", 93 "America/Cuiaba", 94 "America/Curacao", 95 "America/Danmarkshavn", 96 "America/Dawson", 97 "America/Dawson_Creek", 98 "America/Denver", 99 "America/Detroit", 100 "America/Dominica", 101 "America/Edmonton", 102 "America/Eirunepe", 103 "America/El_Salvador", 104 "America/Fort_Nelson", 105 "America/Fortaleza", 106 "America/Glace_Bay", 107 "America/Godthab", 108 "America/Goose_Bay", 109 "America/Grand_Turk", 110 "America/Grenada", 111 "America/Guadeloupe", 112 "America/Guatemala", 113 "America/Guayaquil", 114 "America/Guyana", 115 "America/Halifax", 116 "America/Havana", 117 "America/Hermosillo", 118 "America/Indiana/Indianapolis", 119 "America/Indiana/Knox", 120 "America/Indiana/Marengo", 121 "America/Indiana/Petersburg", 122 "America/Indiana/Tell_City", 123 "America/Indiana/Vevay", 124 "America/Indiana/Vincennes", 125 "America/Indiana/Winamac", 126 "America/Inuvik", 127 "America/Iqaluit", 128 "America/Jamaica", 129 "America/Juneau", 130 "America/Kentucky/Louisville", 131 "America/Kentucky/Monticello", 132 "America/Kralendijk", 133 "America/La_Paz", 134 "America/Lima", 135 "America/Los_Angeles", 136 "America/Lower_Princes", 137 "America/Maceio", 138 "America/Managua", 139 "America/Manaus", 140 "America/Marigot", 141 "America/Martinique", 142 "America/Matamoros", 143 "America/Mazatlan", 144 "America/Menominee", 145 "America/Merida", 146 "America/Metlakatla", 147 "America/Mexico_City", 148 "America/Miquelon", 149 "America/Moncton", 150 "America/Monterrey", 151 "America/Montevideo", 152 "America/Montreal", 153 "America/Montserrat", 154 "America/Nassau", 155 "America/New_York", 156 "America/Nipigon", 157 "America/Nome", 158 "America/Noronha", 159 "America/North_Dakota/Beulah", 160 "America/North_Dakota/Center", 161 "America/North_Dakota/New_Salem", 162 "America/Ojinaga", 163 "America/Panama", 164 "America/Pangnirtung", 165 "America/Paramaribo", 166 "America/Phoenix", 167 "America/Port-au-Prince", 168 "America/Port_of_Spain", 169 "America/Porto_Velho", 170 "America/Puerto_Rico", 171 "America/Rainy_River", 172 "America/Rankin_Inlet", 173 "America/Recife", 174 "America/Regina", 175 "America/Resolute", 176 "America/Rio_Branco", 177 "America/Santa_Isabel", 178 "America/Santarem", 179 "America/Santiago", 180 "America/Santo_Domingo", 181 "America/Sao_Paulo", 182 "America/Scoresbysund", 183 "America/Shiprock", 184 "America/Sitka", 185 "America/St_Barthelemy", 186 "America/St_Johns", 187 "America/St_Kitts", 188 "America/St_Lucia", 189 "America/St_Thomas", 190 "America/St_Vincent", 191 "America/Swift_Current", 192 "America/Tegucigalpa", 193 "America/Thule", 194 "America/Thunder_Bay", 195 "America/Tijuana", 196 "America/Toronto", 197 "America/Tortola", 198 "America/Vancouver", 199 "America/Whitehorse", 200 "America/Winnipeg", 201 "America/Yakutat", 202 "America/Yellowknife", 203 "Antarctica/Casey", 204 "Antarctica/Davis", 205 "Antarctica/DumontDUrville", 206 "Antarctica/Macquarie", 207 "Antarctica/Mawson", 208 "Antarctica/McMurdo", 209 "Antarctica/Palmer", 210 "Antarctica/Rothera", 211 "Antarctica/South_Pole", 212 "Antarctica/Syowa", 213 "Antarctica/Troll", 214 "Antarctica/Vostok", 215 "Arctic/Longyearbyen", 216 "Asia/Aden", 217 "Asia/Almaty", 218 "Asia/Amman", 219 "Asia/Anadyr", 220 "Asia/Aqtau", 221 "Asia/Aqtobe", 222 "Asia/Ashgabat", 223 "Asia/Baghdad", 224 "Asia/Bahrain", 225 "Asia/Baku", 226 "Asia/Bangkok", 227 "Asia/Beirut", 228 "Asia/Bishkek", 229 "Asia/Brunei", 230 "Asia/Chita", 231 "Asia/Choibalsan", 232 "Asia/Chongqing", 233 "Asia/Colombo", 234 "Asia/Damascus", 235 "Asia/Dhaka", 236 "Asia/Dili", 237 "Asia/Dubai", 238 "Asia/Dushanbe", 239 "Asia/Gaza", 240 "Asia/Harbin", 241 "Asia/Hebron", 242 "Asia/Ho_Chi_Minh", 243 "Asia/Hong_Kong", 244 "Asia/Hovd", 245 "Asia/Irkutsk", 246 "Asia/Jakarta", 247 "Asia/Jayapura", 248 "Asia/Jerusalem", 249 "Asia/Kabul", 250 "Asia/Kamchatka", 251 "Asia/Karachi", 252 "Asia/Kashgar", 253 "Asia/Kathmandu", 254 "Asia/Katmandu", 255 "Asia/Khandyga", 256 "Asia/Kolkata", 257 "Asia/Krasnoyarsk", 258 "Asia/Kuala_Lumpur", 259 "Asia/Kuching", 260 "Asia/Kuwait", 261 "Asia/Macau", 262 "Asia/Magadan", 263 "Asia/Makassar", 264 "Asia/Manila", 265 "Asia/Muscat", 266 "Asia/Nicosia", 267 "Asia/Novokuznetsk", 268 "Asia/Novosibirsk", 269 "Asia/Omsk", 270 "Asia/Oral", 271 "Asia/Phnom_Penh", 272 "Asia/Pontianak", 273 "Asia/Pyongyang", 274 "Asia/Qatar", 275 "Asia/Qyzylorda", 276 "Asia/Rangoon", 277 "Asia/Riyadh", 278 "Asia/Sakhalin", 279 "Asia/Samarkand", 280 "Asia/Seoul", 281 "Asia/Shanghai", 282 "Asia/Singapore", 283 "Asia/Srednekolymsk", 284 "Asia/Taipei", 285 "Asia/Tashkent", 286 "Asia/Tbilisi", 287 "Asia/Tehran", 288 "Asia/Thimphu", 289 "Asia/Tokyo", 290 "Asia/Ulaanbaatar", 291 "Asia/Urumqi", 292 "Asia/Ust-Nera", 293 "Asia/Vientiane", 294 "Asia/Vladivostok", 295 "Asia/Yakutsk", 296 "Asia/Yekaterinburg", 297 "Asia/Yerevan", 298 "Atlantic/Azores", 299 "Atlantic/Bermuda", 300 "Atlantic/Canary", 301 "Atlantic/Cape_Verde", 302 "Atlantic/Faroe", 303 "Atlantic/Madeira", 304 "Atlantic/Reykjavik", 305 "Atlantic/South_Georgia", 306 "Atlantic/St_Helena", 307 "Atlantic/Stanley", 308 "Australia/Adelaide", 309 "Australia/Brisbane", 310 "Australia/Broken_Hill", 311 "Australia/Currie", 312 "Australia/Darwin", 313 "Australia/Eucla", 314 "Australia/Hobart", 315 "Australia/Lindeman", 316 "Australia/Lord_Howe", 317 "Australia/Melbourne", 318 "Australia/Perth", 319 "Australia/Sydney", 320 "Europe/Amsterdam", 321 "Europe/Andorra", 322 "Europe/Athens", 323 "Europe/Belgrade", 324 "Europe/Berlin", 325 "Europe/Bratislava", 326 "Europe/Brussels", 327 "Europe/Bucharest", 328 "Europe/Budapest", 329 "Europe/Busingen", 330 "Europe/Chisinau", 331 "Europe/Copenhagen", 332 "Europe/Dublin", 333 "Europe/Gibraltar", 334 "Europe/Guernsey", 335 "Europe/Helsinki", 336 "Europe/Isle_of_Man", 337 "Europe/Istanbul", 338 "Europe/Jersey", 339 "Europe/Kaliningrad", 340 "Europe/Kiev", 341 "Europe/Lisbon", 342 "Europe/Ljubljana", 343 "Europe/London", 344 "Europe/Luxembourg", 345 "Europe/Madrid", 346 "Europe/Malta", 347 "Europe/Mariehamn", 348 "Europe/Minsk", 349 "Europe/Monaco", 350 "Europe/Moscow", 351 "Europe/Oslo", 352 "Europe/Paris", 353 "Europe/Podgorica", 354 "Europe/Prague", 355 "Europe/Riga", 356 "Europe/Rome", 357 "Europe/Samara", 358 "Europe/San_Marino", 359 "Europe/Sarajevo", 360 "Europe/Simferopol", 361 "Europe/Skopje", 362 "Europe/Sofia", 363 "Europe/Stockholm", 364 "Europe/Tallinn", 365 "Europe/Tirane", 366 "Europe/Uzhgorod", 367 "Europe/Vaduz", 368 "Europe/Vatican", 369 "Europe/Vienna", 370 "Europe/Vilnius", 371 "Europe/Volgograd", 372 "Europe/Warsaw", 373 "Europe/Zagreb", 374 "Europe/Zaporozhye", 375 "Europe/Zurich", 376 GMT, 377 "Indian/Antananarivo", 378 "Indian/Chagos", 379 "Indian/Christmas", 380 "Indian/Cocos", 381 "Indian/Comoro", 382 "Indian/Kerguelen", 383 "Indian/Mahe", 384 "Indian/Maldives", 385 "Indian/Mauritius", 386 "Indian/Mayotte", 387 "Indian/Reunion", 388 "Pacific/Apia", 389 "Pacific/Auckland", 390 "Pacific/Bougainville", 391 "Pacific/Chatham", 392 "Pacific/Chuuk", 393 "Pacific/Easter", 394 "Pacific/Efate", 395 "Pacific/Enderbury", 396 "Pacific/Fakaofo", 397 "Pacific/Fiji", 398 "Pacific/Funafuti", 399 "Pacific/Galapagos", 400 "Pacific/Gambier", 401 "Pacific/Guadalcanal", 402 "Pacific/Guam", 403 "Pacific/Honolulu", 404 "Pacific/Johnston", 405 "Pacific/Kiritimati", 406 "Pacific/Kosrae", 407 "Pacific/Kwajalein", 408 "Pacific/Majuro", 409 "Pacific/Marquesas", 410 "Pacific/Midway", 411 "Pacific/Nauru", 412 "Pacific/Niue", 413 "Pacific/Norfolk", 414 "Pacific/Noumea", 415 "Pacific/Pago_Pago", 416 "Pacific/Palau", 417 "Pacific/Pitcairn", 418 "Pacific/Pohnpei", 419 "Pacific/Ponape", 420 "Pacific/Port_Moresby", 421 "Pacific/Rarotonga", 422 "Pacific/Saipan", 423 "Pacific/Tahiti", 424 "Pacific/Tarawa", 425 "Pacific/Tongatapu", 426 "Pacific/Truk", 427 "Pacific/Wake", 428 "Pacific/Wallis" 429 ) 430 2016-04-27 18:26:04.393 NADate[11684:458251] 2005-08-30 00:00:00 +0000 431 2016-04-27 18:26:04.393 NADate[11684:458251] 2016-04-27 18:26:04 432 2016-04-27 18:26:04.394 NADate[11684:458251] 3月21日 433 Program ended with exit code: 0
打印结果中的数组,是时区代码
从430行开始是日期打印结果
三.注意
NSDate比较简单,大致分为两个步骤:1.创建日期 2.日期格式化(显示成什么格式)
还有一个需要注意的地方:
如果在打印的过程中,发现获取的时间与当前时间相差8个小时,不要担心,那是正常的,因为程序默认时间是美国时间.加上8个小时就好了.
希望能帮到需要的人,如果有什么不对的,请直接告诉我,我会用最短的时间改正.谢谢~