OC语言 常用数据类型=>>NSDate & NSCalendar & NSDateFormatter
来源:互联网 发布:域名注册后怎么建网站 编辑:程序博客网 时间:2024/05/16 14:14
日期和时间、使用时区
NSDate & NSCalendar & NSDateFormatter
//
// main.m
// Tank-OC07-02
//
// Created by ibokan on 15/12/17.
// Copyright © 2015年谭其伟. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Tool.h"
int main(int argc,const char * argv[]) {
@autoreleasepool {
//NSDate
//在OC中,Foundation框架为我们提供了强大的时间操作类‘NSDate’,该类封装了各种处理时间和日期的API,
//创建=获取系统当前时间(GMT Greenwich Mean Time格林尼治标准时间,它与北京时间相差8个小时,北京时间= GMT时间 + 8); api api 51
NSDate *date1 = [NSDatedate];
NSLog(@"date1= %@",date1);
//当前系统时间+100秒
//NSTimeInterval 是一个以秒为单位的时间片,也叫时间戳。也可以为负。
NSDate *date2 = [NSDatedateWithTimeIntervalSinceNow:-60];
NSLog(@"date2 = %@",date2);
//获取当前实际时间:+60*60*8
NSDate *datenow = [NSDatedateWithTimeIntervalSinceNow:60*60*8];
NSLog(@"datenow = %@",datenow);
//1970年1月1日0时+ 0秒
NSDate *date3 = [NSDatedateWithTimeIntervalSince1970:0];
NSLog(@"date3 = %@",date3); //1970是UNIX Time,纪元年
//距离sinceDate日期timeInterval时间的时间
NSDate *date4 = [NSDatedateWithTimeInterval:100sinceDate:[NSDatedate]];
NSLog(@"date4 = %@",date4);
//通过时间追加创建NSDate,同样的返回senconds秒后的时间,如果这个senconds为负的话,就是返回senconds秒前的时间。
NSDate *date5 = [date4 dateByAddingTimeInterval:100];
NSLog(@"date5 =%@",date5);
//时期比较
//1.两个日期的时间间隔
//将一个时期转换成时间戳,此时间戳是以1970年为标准,
NSTimeInterval timeInterval1970 = [[NSDatedate] timeIntervalSince1970];
NSLog(@"timeInterval1970 = %f",timeInterval1970);
//将一个时间转换成时间戳,此时间戳是以现在为标准
NSTimeInterval timeIntervalNow = [[NSDatedate]timeIntervalSinceNow];
NSLog(@"timeIntervalNow = %f",timeIntervalNow);
//2.日期的早晚比较
NSDate *dateNow = [NSDatedate];
NSDate *Anhourago = [dateNow dateByAddingTimeInterval:-3600];
//判断两个日期是否相等
BOOL flag = [dateNow isEqualToDate:Anhourago];
if (flag) {
NSLog(@"dateNow = Anhourago");
}
//判断两个日期的先后,返回较早的日期
NSDate *date6 = [dateNow earlierDate:Anhourago];
if ([date6 isEqualToDate:dateNow]) {
NSLog(@"较早的时间是dateNow");
}
else
{
NSLog(@"较早时间是Anhourago");
}
//判断两个日期的先后,返回较晚的日期
NSDate *date7 = [dateNow laterDate:Anhourago];
if ([date7 isEqualToDate:dateNow]) {
NSLog(@"较晚的时间是dateNow");
}
else
{
NSLog(@"较晚的时间是Anhourago");
}
//比较两个日期的早晚也可以使用我们之前学过的‘compare’; 不加*时都是变量,不是对象
NSComparisonResult comparisonResult = [dateNowcompare:Anhourago];
switch (comparisonResult) { //(一定是整形的)
caseNSOrderedAscending:
NSLog(@"dateNow < Anhourago");
break;
case NSOrderedSame:
NSLog(@"dateNow = Anhourago");
break;
caseNSOrderedDescending:
NSLog(@"dateNow > Anhourago");
break;
default:
break;
}
/*
NSCalendar
我们通过NSTimeInterval create a time is conveniront,but不直观,Foundation框架为此为我们提供了NSCalendar,NSCalendar由更自然的日期组成,例如日,月,星期等,可以使用NSDateComponents和
NSCalendar 来创建一个NSDate对象。
*/
NSCalendar *currentCalendar = [NSCalendarcurrentCalendar];
NSDateComponents *components = [[NSDateComponentsalloc]init];
components.year = 2015;
components.month =12;
components.day = 17;
components.hour = 22;
components.minute = 45;
components.second = 30; //api 161
//输出的日期的小时减8了
NSDate *datee = [currentCalendar dateFromComponents:components];
NSLog(@"datee = %@",datee);
// NSTimeZone
// 处理日期和时间经常遇到的一个问题就是时区。Foundation框架提供了NSTimeZone来指定地区日历对象的时区。
//列出所有时区
NSArray *array = [NSTimeZoneknownTimeZoneNames];
NSLog(@"array = %@",array);
//可以指定名称参数创建一个时区
NSTimeZone *timezone1 = [NSTimeZonetimeZoneWithName:@"Asia/Tokyo"];
NSLog(@"timezone1 = %@",timezone1);
//可以指定时区缩写创建一个时区
NSTimeZone *timezone2 = [NSTimeZonetimeZoneWithAbbreviation:@"UTC"]; //PRC 中国
//如何将NSDate转换成 NSString?NSDteFormatter默认转换为本地区时间
NSDateFormatter *dateFormatter = [NSDateFormatternew];
//设置时区(默认时区)
dateFormatter.timeZone = [NSTimeZonesystemTimeZone];
//设置时间输出格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
// [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"];
NSString *string = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"string = %@",string);
//将时间的类型的字符串转化成日期
NSString *string1 =@"1970-01-01 08:00:00";
[dateFormatter setTimeZone:[NSTimeZonetimeZoneWithAbbreviation:@"UTC"]]; //UTC GMT
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//这里得到的时间是GMT时间
NSDate *date8 = [dateFormatter dateFromString:string1];
NSLog(@"date8 = %@",date8);
NSTimeInterval timeInterval = date8.timeIntervalSinceNow;
NSLog(@"距今已经%f秒了",-timeInterval);
timeInterval = -timeInterval / 60;
NSLog(@"%f",timeInterval);
NSLog(@"%f",[[NSDatedate] timeIntervalSince1970]);
NSString *string2 =@"2015-12-18 08:44:45";
NSString *string3 = [ToolhandleDate:string];
NSLog(@"%@",string1);
}
return 0;
}
Tool.h//// Tool.h// Tank-OC07-02//// Created by ibokan on 15/12/17.// Copyright © 2015年 谭其伟. All rights reserved.//#import <Foundation/Foundation.h>@interface Tool : NSObject//dateString 格式为 :2015-12-17 08:08:08+(NSString *)handleDate:(NSString *)dateString;/* 传入时间与现在时间 差距 60秒以内,输出@“刚刚”;如果 差距 1个小时以内,输出 @“XX分钟” 差距 1-24小时以内,输出 @“xx小时前” 差距 大于一天,输出 @“xx天前” 差距 大于30天,输出 @“xx个月前” 差距 大于365天,输出 @“完整日期” */@end
Tool.m//// Tool.m// Tank-OC07-02//// Created by ibokan on 15/12/17.// Copyright © 2015年 谭其伟. All rights reserved.//#import "Tool.h"@implementation Tool+(NSString *)handleDate:(NSString *)dateString{ NSDateFormatter *dateFormatter = [NSDateFormatter new]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSDate *date1 = [dateFormatter dateFromString:dateString]; NSMutableString *string = [NSMutableString new]; if (date1 = string) { return @"请按格式输入正确日期"; } NSTimeInterval timeInterval = date1.timeIntervalSinceNow; timeInterval *= -1; if (timeInterval >=0 && timeInterval < 60) { [string appendString:@"刚刚"]; } else if (timeInterval >= 60 && timeInterval <3600) { int min = timeInterval / 60; [string appendFormat: @"%d分钟前",min]; } else if (timeInterval >= 3600 && timeInterval < 3600*24) { int hour = timeInterval / 3600; [string appendFormat:@"%d小时前",hour]; } else if (timeInterval >= 3600*20 && timeInterval < 3600*24*30) { int day = timeInterval / (3600*24); [string appendFormat:@"%d days ago",day]; } else if (timeInterval >= 3600*24*30 && timeInterval < 3600*24*30*12) { int month = timeInterval/(3600*24*30); [string appendFormat:@"%d months ago",month]; } else if (timeInterval >= 3600*24*30*12) { int year = timeInterval; [string appendFormat:@"%@",[NSDate date]]; } else { NSString *string2 = @"请按格式输入正确日期"; [string appendFormat:string2]; } return string;}@end
输出结果:
2015-12-17 19:26:37.141 Tank-OC07-02[35343:343741] date1= 2015-12-17 11:26:37 +00002015-12-17 19:26:37.142 Tank-OC07-02[35343:343741] date2 = 2015-12-17 11:25:37 +00002015-12-17 19:26:37.143 Tank-OC07-02[35343:343741] date3 = 1970-01-01 00:00:00 +00002015-12-17 19:26:37.143 Tank-OC07-02[35343:343741] date4 = 2015-12-17 11:28:17 +00002015-12-17 19:26:37.143 Tank-OC07-02[35343:343741] date5 =2015-12-17 11:29:57 +00002015-12-17 19:26:37.144 Tank-OC07-02[35343:343741] timeInterval1970 = 1450351597.1437112015-12-17 19:26:37.144 Tank-OC07-02[35343:343741] timeIntervalNow = -0.0000032015-12-17 19:26:37.144 Tank-OC07-02[35343:343741] 较早时间是Anhourago2015-12-17 19:26:37.144 Tank-OC07-02[35343:343741] 较晚的时间是dateNow2015-12-17 19:26:37.145 Tank-OC07-02[35343:343741] dateNow > Anhourago2015-12-17 19:26:37.145 Tank-OC07-02[35343:343741] datee = 2015-12-17 14:45:30 +00002015-12-17 19:26:37.149 Tank-OC07-02[35343:343741] array = ( "Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa",<span style="white-space:pre"></span>...................)2015-12-17 19:26:37.156 Tank-OC07-02[35343:343741] timezone1 = Asia/Tokyo (GMT+9) offset 324002015-12-17 19:26:37.157 Tank-OC07-02[35343:343741] string = 2015-12-17 19:26:372015-12-17 19:26:37.158 Tank-OC07-02[35343:343741] date8 = 1970-01-01 08:00:00 +00002015-12-17 19:26:37.159 Tank-OC07-02[35343:343741] 距今已经1450322797.159240秒了2015-12-17 19:26:37.160 Tank-OC07-02[35343:343741] 24172046.6193212015-12-17 19:26:37.160 Tank-OC07-02[35343:343741] 1450351597.160410Program ended with exit code: 0
- OC语言 常用数据类型=>>NSDate & NSCalendar & NSDateFormatter
- OC NSDate NSDateFormatter NSCalendar
- NSDateFormatter NSDate NSCalendar NSdateComponents
- NSDate , NSDateComponents , NSDateFormatter, NSCalendar
- NSDate、NSCalendar、NSDateFormatter
- NSDate NSDateFormatter NSTimeZone NSDateComponents NSCalendar
- 时间解析(NSDate、NSDateFormatter、NSCalendar、NSDateComponents):
- OC -- NSDate和NSDateFormatter小结
- OC学习 -- NSDate和NSDateFormatter
- iOS时间处理(NSDate、NSDateComponents、NSCalendar、NSDateFormatter、NSTimeZone)
- iOS时间相关类:NSDate, NSCalendar, NSDateComponents, NSDateFormatter
- ios开发系列之NSDate,NSDateFormatter,NSDateComponents和NSCalendar
- 17 Foundation框架之NSDate、NSDateFormatter、NSDateComponents、NSCalendar、NSLocale、NSTimer
- 日期和时间 NSDate NSTimeInterval NSCalendar NSDateComponents NSDateFormatter
- OC:NSDate和NSDateFormatter的知识点
- OC 学习笔记5 NSDate NSDateFormatter
- OC语言 常用数据类型=>>NSData & NSMutableData
- NSDate、NSCalendar
- 第9周项目1 - 猴子选大王(数组版).cpp
- NODEJS 初学示例
- MFC中使用OLE/COM操作EXCEL的方法
- iOS button总结
- hadoop问题小记
- OC语言 常用数据类型=>>NSDate & NSCalendar & NSDateFormatter
- 100,类扩展
- 第9周实践项目3-稀疏矩阵的三元组表示的实现及应用.cp
- iOS 打包
- “异常 ”的学习
- Objective-C中的内存管理
- web开发弹性盒模型flexbox新旧比较
- java代码与mysql语句的一些优化
- 【leetcode题解】【99.38】【E】Contains Duplicate II