ios - 将 DatePicker 日期转换为 UTC 格式返回 NULL
问题描述
我有 4 个 UITextfiled,开始日期、开始时间和结束日期、结束时间。然后我将我的日期和时间发送到我的 UTC 函数中,但它返回 null。
NSString *str1 = _startDateField.text;
str1 = [str1 stringByAppendingString:@" "];
str1 = [str1 stringByAppendingString:_startTimeField.text];
NSLog(@"str1 : %@", str1);
NSString *str2 = _endDateField.text;
str2 = [str2 stringByAppendingString:@" "];
str2 = [str2 stringByAppendingString:_endTimeField.text];
NSLog(@"str2 : %@", str2);
// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MMM-yyyy HH:mm"];
NSDate *date1 = [dateFormat dateFromString:str1];
NSDate *date2 = [dateFormat dateFromString:str2];
NSLog(@"%@", date1);
NSLog(@"%@", date2);
NSString *startTime = [self getUTCFormateDate:date1];
NSString *endTime = [self getUTCFormateDate:date2];
NSLog(@"str1 : %@", startTime);
NSLog(@"str2 : %@", endTime);
覆盖到UTC
格式:
-(NSString *)getUTCFormateDate:(NSDate *)localDate {
NSLog(@"%@", localDate);
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm"];
NSString *dateString = [dateFormatter stringFromDate:localDate];
NSLog(@"%@", dateString);
return dateString;
}
我想从我的文本字段中读取日期和时间并将它们转换为 UTC 格式。
解决方案
您的代码很好且正确,我添加了 defaultTimeZone 以获取时区并将时间减去 UTC 时间。我得到了输出。
检查这个
NSString *str1 = @"26-Nov-2019";
str1 = [str1 stringByAppendingString:@" "];
str1 = [str1 stringByAppendingString:@"9:35 am"];
NSLog(@"str1 : %@", str1);
NSString *str2 = @"26-Nov-2019";
str2 = [str2 stringByAppendingString:@" "];
str2 = [str2 stringByAppendingString:@"11:59"];
NSLog(@"str2 : %@", str2);
// Convert string to date object
NSDate *date1 = [self getUTCDate:str1];
NSDate *date2 = [self getUTCDate:str2];
NSLog(@"date1 %@", date1);
NSLog(@"date2 %@", date2);
NSString *startTime = [self getUTCFormateDate:date1];
NSString *endTime = [self getUTCFormateDate:date2];
NSLog(@"str1 : %@", startTime);
NSLog(@"str2 : %@", endTime);
-(NSDate *)getUTCDate:(NSString *)currentDate {
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MMM-yyyy HH:mm"];
NSDate *date1 = [dateFormat dateFromString:currentDate];
if (date1 == nil) {
[dateFormat setDateFormat:@"dd-MMM-yyyy hh:mm a"];
date1 = [dateFormat dateFromString:currentDate];
}
return date1;
}
-(NSString *)getUTCFormateDate:(NSDate *)localDate {
NSLog(@"%@", localDate);
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm"];
NSLocale *twelveHourLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
dateFormatter.locale = twelveHourLocale;
NSTimeInterval timeZoneoffset = [[NSTimeZone defaultTimeZone] secondsFromGMT];
NSTimeInterval utcTimeInterval = [localDate timeIntervalSinceReferenceDate] - timeZoneoffset;
NSDate *utcCurrentDate = [NSDate dateWithTimeIntervalSinceReferenceDate:utcTimeInterval];
NSString *dateString = [dateFormatter stringFromDate:utcCurrentDate];
NSLog(@"dateString %@", dateString);
return dateString;
}
推荐阅读
- c++ - 如何将类型数组的动态对象传递给函数?
- python - sqlalchemy 忽略窗口函数中的空值
- python - 如何确定元组是否没有空输入Python
- docker - 在 Jenkins 容器中构建 docker 镜像
- amazon-web-services - 如何通过 java sdk 为 AWS API Gateway 设置自定义访问日志配置?
- matlab - 如何下载 MatLab 软件包?
- excel - Excel - 忽略空白行和小计行的动态数据透视表
- javascript - 在 2 点 X 和 Y 位置之间创建 NICE(随机)路径
- tensorflow - 复制张量 N 次
- ios - 如何以编程方式呈现访客 Wi-Fi“条款和条件”确认对话框?