NSDate转NSString 结果为nil

本文详细解析了NSDate与NSString之间的转换方法,特别是针对NSDateFormatter的使用技巧,包括如何避免因格式不一致导致的转化失败问题,以及计算两个时间点之间的时间差。

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

众所周知:
NSDate转NSString 的转化,代码如下:

1 NSString *birthdayStr=@"1986-03-28 00:00:00.000";
2 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
3 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
4  [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];//解决8小时时间差问题
5 NSDate *birthdayDate = [dateFormatter dateFromString:birthdayStr];

但是有时会遇到转化完结果 例如上面代码 birthdayDate 可能会出现为nil的情况。
如下代码,计算两个时间的时间差

+ (NSTimeInterval)pleaseInsertStarTime:(NSString *)starTime andInsertEndTime:(NSString *)endTime{
    NSDateFormatter* formater = [[NSDateFormatter alloc] init];
    [formater setDateFormat:@"YYYY-MM-dd hh:mm:ss.SSS"];//根据自己的需求定义格式
    NSDate* startDate = [formater dateFromString:starTime];
    NSDate* endDate = [formater dateFromString:endTime];
    NSTimeInterval time = [endDate timeIntervalSinceDate:startDate];
    return time;
}

如下图所示:
在这里插入图片描述

为什么会出现nil呢

可能是 NSDateFormatter 的格式设置的不统一,这里需要注意YYYY-MM-dd hh:mm:ss.SSS 这其中的每个字母都要保持前后一致,请注意yyyy和YYYY 是不一样的格式,HH和hh也是不一致的,格式不一致的转化导致了NSDate 为nil的情况,请仔细排查自己的代码

我是磊怀 2849765859 请联系我!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值