
</p><p class="p1"><span class="s6"> </span>现在<span class="s6">loctime</span>就是指定时区的时间字符串了</p><p class="p1">
</p><p class="p1"><span class="s7">5</span>、将时间戳<span class="s6"></span>转变为标准时间</p><p class="p2"> NSTimeInterval time=[timestamp doubleValue]<span class="s4">// timetamp</span><span class="s5">为</span><span class="s4">“</span><span class="s5">时间戳</span><span class="s4">”</span><span class="s5">字符串</span></p><p class="p2"> <span class="s2">NSDate</span>*detaildate=[NSDate dateWithTimeIntervalSince1970:time]</p><p class="p2"> NSLog(<span class="s1">@"date:%@"</span>,[detaildate description])</p><p class="p3">
</p><p class="p4">
实现日期选取器:想在每次加载软件的时间都能将选取器加载到当前的日期和时间,需要在viewDidLoad中创建一个新的NSDate对象,通过这种方式创建这个对象包含当前的时间和时间。然后将datePicker设置为该日期,这样就可以确保每次从nib中加载此视图时,选取器都会重置为当前得日期和时间..-(void)viewDidLoad{
NSDate *now = [[NSDate alloc]init]
[datePicker setDate:now animated:NO]
[now release]}
然后在你需要获取日期的方法中:
NSDate *selected = [datePicker date]
你可以获取到当前0时区的时间,如果需要设置日期的格式需要添加如下的格式订制:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]
这是规定了西八时区的时间格式。
一、给定一个10位时间戳,转成不同时区的日期
//给定一个时间戳
NSString *test = @"1652861974”
//转成北京时区下的日期
NSDateFormatter *beijingFormatter = [[NSDateFormatter alloc] init]
[beijingFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]
NSTimeZone *beijingZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT+0800"]
[beijingFormatter setTimeZone:beijingZone]
//转成手机系统设置的时区(纽约)下的日期
NSDateFormatter *localFormatter = [[NSDateFormatter alloc] init]
[localFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]
NSTimeZone *localZone = [NSTimeZone systemTimeZone]//当前手机设置的是纽约时区
[localFormatter setTimeZone:localZone]
NSDate* testDate = [NSDate dateWithTimeIntervalSince1970:[test longLongValue]]
NSString* beijingDateString = [beijingFormatter stringFromDate: testDate]//北京时区下的日期字符串 :“2022-05-18 16:19:34”
NSString* localTimeString = [localFormatter stringFromDate: testDate]// 换成本地(纽约)时间:2022-05-18 04:19:34
NSLog(@"服务器返回北京时间:%@ 转换成本地时区时间:%@ ", beijingDateString, localTimeString)
结果打印: 服务器返回北京时间:2022-05-18 16:19:34 转换成本地时区时间:2022-05-18 04:19:34
二、反向验证同一时刻下世界在不同时区的日期返回的时间戳是相同的:
北京时区日期: 2022-05-18 16:19:34 ( 以上的beijingDateString对应的 )
纽约时区日期: 2022-05-18 04:19:34( 以上的localTimeString对应的 )
NSDate *beiDate = [beijingFormatter dateFromString: beijingDateString]
NSTimeIntervalbeiInterval = [beiDate timeIntervalSince1970]
NSDate*LocDate = [localFormatter dateFromString: localTimeString]
NSTimeIntervalLocInterval = [LocDate timeIntervalSince1970]
NSLog(@"原始时间戳:%@ 北京时区生成时间戳:%f 本地时区生成时间戳:%f ",test,( double )beiInterval,( double ) LocInterval)
结果打印: 原始时间戳:1652861974 北京时区生成时间戳:1652861974.000000 本地时区生成时间戳:1652861974.000000
验证了同一时刻虽然处于世界不同时区,但是拿到的时间戳是一样的,前提是转成对应时区下的日期即 NSDateFormatter要设置对应的时区。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)