iOS 从服务器获取的字符串中含有 n 不换行的问题

iOS 从服务器获取的字符串中含有 n 不换行的问题,第1张

从服务器获取的字符串里含有 \n ,本意是为了换行,但是赋值给 label 去显示的时候却并没有换行。

收到的JSON字符串中实际是带有转义字符的,控制台打印出来是 \n ,实际却是 \\n 。所以我们需要替换获取到的字符串中的 \\n 为 \n 即可。

一、给定一个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];

NSDateLocDate = [localFormatter   dateFromString: localTimeString];

NSTimeIntervalLocInterval = [LocDate  timeIntervalSince1970];

NSLog(@"原始时间戳:%@ 北京时区生成时间戳:%f  本地时区生成时间戳:%f ",test,( double )beiInterval,( double ) LocInterval);

结果打印:  原始时间戳:1652861974  北京时区生成时间戳:1652861974000000   本地时区生成时间戳:1652861974000000 

验证了同一时刻虽然处于世界不同时区,但是拿到的时间戳是一样的,前提是转成对应时区下的日期即 NSDateFormatter要设置对应的时区。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10899447.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存