Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从目标C和iOS中的24小时格式时间字符串获取不正确的日期_Ios_Objective C_Nsdate_Nsdateformatter - Fatal编程技术网

从目标C和iOS中的24小时格式时间字符串获取不正确的日期

从目标C和iOS中的24小时格式时间字符串获取不正确的日期,ios,objective-c,nsdate,nsdateformatter,Ios,Objective C,Nsdate,Nsdateformatter,我必须从24小时格式(hh:MM)的时间字符串中获取格式为(YYYY-MM-dd hh:MM:ss)的日期 我使用了以下代码,但输出错误: NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setCalendar:[[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]]; [formatter se

我必须从24小时格式(hh:MM)的时间字符串中获取格式为(YYYY-MM-dd hh:MM:ss)的日期

我使用了以下代码,但输出错误:

 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
 [formatter setCalendar:[[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]];
 [formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
 [formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
 [formatter setDateFormat:@"HH:mm"];

 NSDate *myDate = [formatter dateFromString:@"13:54"];
我得到了不正确的输出:2000-01-01 13:54:00+0000

但我希望输出像“2017-01-02 13:54:00”

我检查了,但没有得到正确的解决方案。

试试这个

NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter1 dateFromString:yourdateString];

NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone]; // <- Local time zone
NSTimeZone *utcTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];

NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:date];
NSInteger gmtOffset = [utcTimeZone secondsFromGMTForDate:date];
            NSTimeInterval gmtInterval = currentGMTOffset - gmtOffset;



NSDate *destinationDate = [[NSDate alloc] initWithTimeInterval:gmtInterval    sinceDate:date];

NSDateFormatter *dateFormatters = [[NSDateFormatter alloc] init];
            [dateFormatters setDateFormat:@"MMM dd yyyy hh:mm"];

self.callDate = [dateFormatters stringFromDate: destinationDate];
NSDateFormatter*dateFormatter1=[[NSDateFormatter alloc]init];
[dateFormatter1 setDateFormat:@“yyyy-MM-dd HH:MM:ss”];
NSDate*date=[dateFormatter1 dateFromString:yourdateString];
NSTimeZone*currentTimeZone=[NSTimeZone localTimeZone];// 请尝试此代码

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];
NSString *myString = [dateFormatter stringFromDate:myDate];
输出是正确的

没有年/月/日信息的日期字符串会在
NSDateFormatter
中产生日期2000/1/1

您需要获取当前日期,并将
小时
分钟
组件替换为日期字符串的组件

NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *todayComponents = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:[NSDate date]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[formatter setDateFormat:@"HH:mm"];
NSDate *myDate = [formatter dateFromString:@"13:54"];
NSDateComponents *myDateComponents = [calendar components:NSCalendarUnitHour | NSCalendarUnitMinute fromDate:myDate];
todayComponents.minute = myDateComponents.minute;
todayComponents.hour = myDateComponents.hour;
NSDate *myCompleteDate = [calendar dateFromComponents:todayComponents];

您打印的是NSDate还是NSDate格式的字符串?@LyndseyScott我正在打印myDate(NSDate)@AnandGautam这是您打印NSDate时的预期输出。如果需要所需的输出,则需要打印格式化的日期字符串。我尝试使用此格式“yyy-MM-dd HH:MM:ss”,但得到的输出为零。这是我的代码:NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];[日期格式化程序setDateFormat:@“yyyy-MM-dd HH:MM:ss”];NSDate*date=[dateFormatter dateFromString:@“13:54”]@哈桑:谢谢你的回复,我尝试了你的代码&获取日期为“nil”,最终输出为“3月3日5877521-08:-31”(基本正确,但op应该使用他的
myDate
NSDate
,而不是现在创建和使用
NSDate
。此外,在初始化时在单独的一行声明字符串似乎是不必要的。)@Himanshu这是为了在“yyyy-MM-dd HH-MM-ss”中获取当前日期格式。我的问题不同,兄弟。@LyndseyScott我试着用“myDate NSDate”而不是“now”在Himanshu的代码中,但输出不正确:2000-01-01 19-24-00@AnandGautam这是因为您没有设置NSDate的日期部分,而只是时间部分,所以它使用的是默认日期。如果您希望它显示特定日期,则需要设置日期部分。这不仅仅是假设您指的是今天。@LyndseyScott我明白您的意思您试图告诉我,我尝试在NSDate中设置日期部分,但将myDate输出设置为nil。请检查。。