iOS 关于国外手机使用的本地日历时时间不一致的处理

在使用时间NSDate时,如果手机设置的不是公元纪年(如泰国用的是佛教历,日本用的是日本日历)这时候得到的时间会有很大的区别,而服务器一般情况下都是用的公无纪年。

例如

NSDate* date = [NSDate date];(佛历)

如查是佛教历的话获取到的时间可能是25XX年,和公元经年相差好几百这样进行时间比较的话

就有问题了。

处理方式是使用时首先转化成公元纪年代码如下:

     NSDateFormatter* formatter = [[NSDateFormatter alloc] init];

    //设置为公元纪年,不然的话,在国外如泰国用的是佛教历,日本用的是日本日历
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    formatterOne.calendar = gregorian;
     
     
    //如果手机是12小时制时间(hh),而转换时间和格式为24小时制(HH),那么得到的时间为nil 所以要判断当前手机时间格式再转换
    NSString *formatStringForHours = [NSDateFormatter dateFormatFromTemplate:@"j" options:0 locale:[NSLocale currentLocale]];
    NSRange containsA = [formatStringForHours rangeOfString:@"a"];
     
    //hasAMPM==TURE为12小时制,否则为24小时制
    BOOL hasAMPM = containsA.location != NSNotFound;

     if (hasAMPM) {
        [formatter setDateFormat:@"yyyyMMddhhmmss"];
    } else {
        [formatter setDateFormat:@"yyyyMMddHHmmss"];
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值