Objective-C 获取NSDate对象的年月日时分秒 && NSCalender的使用
程序员文章站
2023-09-29 16:47:33
/*
现在网上大多的获取nsdate年月日时分秒的方法,都在mac os 10.10被苹果公司标记成不建议使用了.
查了好久,终于找到了一个苹果公司推荐使用方法, 以下内容分享给大家...
/*
现在网上大多的获取nsdate年月日时分秒的方法,都在mac os 10.10被苹果公司标记成不建议使用了.
查了好久,终于找到了一个苹果公司推荐使用方法, 以下内容分享给大家
*/
/* 当前时间对象[datenow] */ nsdate *datenow = [nsdate date]; /* 日历类[calendar] 注意: 一定要用[nscalendar currentcalendar]初始化, 如果用[[nscalendar alloc] init]初始化, 获取的时间会是随机式. */ nscalendar *calendar = [nscalendar currentcalendar]; /* 变量 */ nsinteger year; //年 nsinteger month; //月 nsinteger day; //日 nsinteger hour; //时 nsinteger minute; //分 nsinteger second; //秒 nsinteger nanosecond; //10^-9秒 /* 使用[calendar]对象从[datenow]中获取 [hour] [minute] [second] [nanosecond] 注意: '&'是取地址符, 把变量的"地址"传过去, 函数会把相应的值写入这个"地址", 我们的变量里面就存入相应的值了. */ [calendar gethour:&hour minute:&minute second:&second nanosecond:&nanosecond fromdate:datenow]; /* 使用[calendar]对象从[datenow]中获取[year],[month],[day]. 注意: [era]是公元的意思, 现在的日期都会为1. 由于没有文档介绍这个值的含义, 使用的需求度也不高, 暂时先不研究这个. */ [calendar getera:nil year:&year month:&month day:&day fromdate:datenow]; /* 打印获取的值 注意: '%d'是32位整数. '%ld'是64位整数. '%2ld'是64位整数, 如果不足2位则在左边补充空格. '%02ld'是64位整数, 如果不足2位则在左边补充'0'. 输出结果: 2015-03-26 13:44:34.582 mycake[3020:106505] 2015-03-26 13:44:34.582 结果说明: 对比一下, 系统输出的时间, 和你的时间是不是一样的. 而且毫米数字都一样, 说明这种写法效率非常高. */ nslog(@"%04ld-%02ld-%02ld %02ld:%02ld:%02ld.%03ld", year, month, day, hour, minute, second, nanosecond/1000000);