我正在处理一个项目的数据共享功能,该功能高度依赖于我遇到相同问题时预先输入的值/结果。我实现了一个令人讨厌的小变通方法,将正确的日期时间以 24 小时格式保存到数据库中。
解决方法很简单
首先,我从设备获取本地日期:
NSDate* now = [NSDate date];
第二步是使用美国语言环境创建NSDateFormatter,而不考虑系统的语言环境,以确保“PM”将是“PM”:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
然后,我将日期(年、月、日)转换为字符串:
[formatter setDateFormat:@"yyyy-MM-dd"];
NSString *date = [formatter stringFromDate:now];
对于下一部分,我得到了小时、分钟和秒:
[formatter setDateFormat:@"hh"];
NSString *hours = [formatter stringFromDate:now];
[formatter setDateFormat:@"mm"];
NSString *minutes = [formatter stringFromDate:now];
[formatter setDateFormat:@"ss"];
NSString *seconds = [formatter stringFromDate:now];
接下来,我得到了一天的一部分:
[formatter setDateFormat:@"a"];
NSString *partOfDay = [formatter stringFromDate:now];
然后是逻辑:如果一天中的部分时间是下午但时间少于 12,我们只需要更正它。在代码中:
if([partOfDay isEqualToString:@"PM"] && [hours intValue] < 12) {
hours = [[NSString alloc] initWithFormat:@"%i", ([hours intValue] + 12)];
}
修改后,我们准备将字符串放在一起,以便将日期时间保存到 SQL 中:
NSString *sqlDateTime = [[NSString alloc] initWithFormat:@"%@ %@:%@:%@", date, hours, minutes, seconds];
仅此而已。从现在开始,我们只能希望 Apple 能够修复这个错误,使其能够正常工作。
我希望这会有所帮助。