Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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
Ios 从月、日和年创建NSDate_Ios_Iphone_Objective C_Nsdateformatter - Fatal编程技术网

Ios 从月、日和年创建NSDate

Ios 从月、日和年创建NSDate,ios,iphone,objective-c,nsdateformatter,Ios,Iphone,Objective C,Nsdateformatter,我想从字符串创建一个NSDate变量,该日期来自第三方服务器,因此我无法更改它。日期的格式为2013年12月8日,我正在使用以下给定的日期格式化程序样式将其转换为日期,但这为所有项目创建了一个错误的固定日期,即2012-12-22 19:00:00+0000 请你指导我如何解决这个问题好吗。我不想打断字符串并使用NSDateComponents来创建日期 [dateFormaterForSermonTemp setDateFormat:@"MMMM dd, YYYY"]; 您可以使用以下代码:

我想从字符串创建一个NSDate变量,该日期来自第三方服务器,因此我无法更改它。日期的格式为2013年12月8日,我正在使用以下给定的日期格式化程序样式将其转换为日期,但这为所有项目创建了一个错误的固定日期,即2012-12-22 19:00:00+0000

请你指导我如何解决这个问题好吗。我不想打断字符串并使用NSDateComponents来创建日期

[dateFormaterForSermonTemp setDateFormat:@"MMMM dd, YYYY"];

您可以使用以下代码:

NSString *stringDate = @"December 08, 2013";

// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM dd, yyyy"];
NSDate *date = [dateFormat dateFromString:stringDate];

// Convert date object to desired output format
[dateFormat setDateFormat:@"MMMM dd, yyyy"];
stringDate = [dateFormat stringFromDate:date];

NSLog(@"%@", stringDate);
stringDate
是来自服务器的字符串,您可以将其转换为
NSDate
并为日期添加新格式,如
@“MMMM dd,yyyy”

(这里,您将得到相同的结果,但更改格式,例如
@“MMMM dd yyy EEE”
,以获取另一个格式日期)

编辑:

也许你需要为你的约会设定时间僵尸

[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0:00"]];

您可以使用以下代码:

NSString *stringDate = @"December 08, 2013";

// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM dd, yyyy"];
NSDate *date = [dateFormat dateFromString:stringDate];

// Convert date object to desired output format
[dateFormat setDateFormat:@"MMMM dd, yyyy"];
stringDate = [dateFormat stringFromDate:date];

NSLog(@"%@", stringDate);
stringDate
是来自服务器的字符串,您可以将其转换为
NSDate
并为日期添加新格式,如
@“MMMM dd,yyyy”

(这里,您将得到相同的结果,但更改格式,例如
@“MMMM dd yyy EEE”
,以获取另一个格式日期)

编辑:

也许你需要为你的约会设定时间僵尸

[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0:00"]];
给你。(鱼竿不是鱼)

因此,日期为2013年12月8日的格式字符串应该类似于(鱼):

别忘了为日期格式化程序设置适当的区域设置,否则在具有不同区域设置的设备上可能会出现意外问题。

这里是您的答案。(鱼竿不是鱼)

NSString *strDate=@"December 08, 2013";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];

NSDate *date=[dateFormatter dateFromString:strDate];
因此,日期为2013年12月8日的格式字符串应该类似于(鱼):

不要忘记为日期格式化程序设置适当的区域设置,否则在具有不同区域设置的设备上可能会出现意外问题

NSString *strDate=@"December 08, 2013";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];

NSDate *date=[dateFormatter dateFromString:strDate];
试试这个



试试这个…

不要使用大写YYYY。请使用小写的yyyy.并注意,生成的NSDate对象将始终以上面显示的格式显示,并且以GMT显示--您无法更改该格式。如果要以其他格式显示,请通过NSDateFormatter运行日期返回以生成字符串。(事实上,您不应该在NSDate上使用
@“%@”
生成的格式,因为该格式仅用于诊断,理论上可以随时更改。)@Anna YYYY和yyyy@Developer,请参阅和。不要使用大写YYYY。请使用小写的yyyy.并注意,生成的NSDate对象将始终以上面显示的格式显示,并且以GMT显示--您无法更改该格式。如果要以其他格式显示,请通过NSDateFormatter运行日期返回以生成字符串。(事实上,您不应该在NSDate上使用
@“%@”
生成的格式,因为该格式仅用于诊断,理论上可以随时更改。)@Anna YYYY和yyyy@Developer,请参见和。最关键的是小写字母“y”。大写字母“Y”有一个奇怪的不同含义,它把一切都搞糟了。请看我的链接,文档不清楚大写字母
Y
是如何以字符串格式工作的。它说它用于“年-周日历”,因此可能需要周信息才能使大写字母
Y
正常工作。关键是小写字母“Y”。大写字母“Y”有一个奇怪的不同含义,它把一切都搞糟了。请看我的链接,文档不清楚大写字母
Y
是如何以字符串格式工作的。它说它用于“年-周日历”因此,可能需要周信息才能使资本
Y
正常工作。是的,其工作但将日期更改为一日后的输出为2013-12-07 19:00:00+0000是的,其工作但将日期更改为一日后的输出为2013-12-07 19:00:00是的,其工作但将日期更改为一日后的输出为2013-12-07 19:00:00:00+0000yes工作但将日期更改为一天之前的输出为2013-12-07 19:00:00+0000yes工作但将日期更改为一天之前的输出为2013-12-07 19:00:00+0000I我认为您的设备上的时钟设置或时区有问题。查看我的编辑。是的,它工作正常,但它将日期更改为一天前输出为2013-12-07 19:00:00+0000我认为您的设备上的时钟设置或时区有问题。看看我的编辑。