iOS关于NSDate、NSString、NSDateFormatter设置时间格式等问题

本文介绍了在iOS开发中处理时间格式的一些关键点,包括获取当前时间、字符串与时间的相互转换,以及在使用NSDateFormatter时应注意的年份格式(建议使用yyyy而非YYYY)。详细讲解了各种日期和时间组件的格式设置,如年(yyyy)、月(MM)、日(dd)、小时(HH)等,并提供了常用的日期格式示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 获取当前时间

// 当前时间
NSDate *now = [NSDate date];
// 获取时间中的详细信息年、月、日、时、分、秒
NSCalendar *calendar = [NSCalendarcurrentCalendar];
NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |NSDayCalendarUnit | NSHourCalendarUnit|NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *dateComponent = [calendarcomponents:unitFlags fromDate:now];
int year = [dateComponentyear];
int month = [dateComponentmonth];
int day = [dateComponentday];
int hour = [dateComponenthour];
int minute = [dateComponentminute];
int second = [dateComponentsecond];

2 字符串、时间相互转换

//字符串转换为日期
//实例化一个NSDateFormatter对象
NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];
//设定时间格式,这里可以设置成自己需要的格式
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date =[dateFormat dateFromString:@"1980-01-01 00:00:01"];

//日期转换为字符串
//实例化一个NSDateFormatter对象
NSDateFormatter* dateFormat = [[NSDateFormatteralloc] init];
//设定时间格式,这里可以设置成自己需要的格式
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];


3 时间设置 dateFormat 格式注意事项

设置格式为 yyyy 苹果开发文档中明确指出

It uses yyyy to specify the year component. A common mistake is to use YYYY. yyyy specifies the calendar year whereas YYYY specifies the year (of “Week of Year”), usedin the ISO year-week calendar. In most cases, yyyy and YYYY yield the same number, however they may be different. Typically you should use the calendar year.

年份如果用大Y会是这周的年份,小y才是标准的年份例如20131229号开始,如果用大Y的话就是2014年的第一周了,年份会转成2014

虽然不一定会出错,但是为了安全,还是使用yyyy 比较可靠。


iOS-NSDateFormatter 格式说明:

G: 公元时代,例如AD公元

yy: 年的后2

yyyy: 完整年

MM: 月,显示为1-12

MMM: 月,显示为英文月份简写, Jan

MMMM: 月,显示为英文月份全称,如 Janualy

dd: 日,2位数表示,如02

d: 日,1-2位显示,如2

EEE: 简写星期几,如Sun

EEEE: 全写星期几,如Sunday

aa: 上下午,AM/PM

H: 时,24小时制,0-23

K:时,12小时制,0-11

m: 分,1-2

mm: 分,2

s: 秒,1-2

ss: 秒,2

S: 毫秒


常用日期结构:

yyyy-MM-dd HH:mm:ss.SSS

yyyy-MM-dd HH:mm:ss

yyyy-MM-dd

MM dd yyyy




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值