-1

我喜欢获取本地设备时间并分配给字符串对象。

NSDate* currentDate = [NSDate date];
NSDateFormatter *dateformatter=[[NSDateFormatter alloc]init];
[dateformatter setDateFormat:@"d MMMM , yyyy"];
self.dateSting=[[NSMutableString alloc]init];
self.dateSting = [NSMutableString stringWithFormat:@"%@" ,[dateformatter stringFromDate:currentDate]];

收到的输出 = 2013 年 3 月 6 日

转换NSStringNSDate下面的对象返回代码

NSDateFormatter *uu=[[NSDateFormatter alloc]init];
[uu setDateFormat:@"d MMMM , yyyy"];

NSDate *yy=[uu dateFromString:self.dateSting];

输出recived=2013-03-05 18:30:00 +0000 天之内的差异。

4

3 回答 3

4

好吧,解决方案相当简单。NSDate始终显示GMT。从您的个人资料中,我可以看到您当前的位置是INDIA,当地时区是 GMT +5.30hrs。

你得到的当前输出是2013-03-05 18:30:00 +0000如果你添加 5.30hrs 你会得到2013-03-06 00:00:00 +0000。请注意,在最后NSDate您可以看到类似的内容+0000,这显示了时区。

这是您问题的原因/解决方案,如果您想知道如何解决,答案就在这里

希望现在一切都清楚了。

于 2013-03-06T06:11:01.620 回答
1

尝试这样的事情。

NSDate* currentDate = [NSDate date];
NSLog(@"%@",currentDate);
NSDateFormatter *dateformatter=[[NSDateFormatter alloc]init];
[dateformatter setDateFormat:@"d MMMM hh:mm:ss, yyyy"];

NSLog(@"%@",[dateformatter stringFromDate:currentDate]);

NSDate *yy=[dateformatter dateFromString:[dateformatter stringFromDate:currentDate]];
NSLog(@"%@",yy);

NSDateFormatter *uu=[[NSDateFormatter alloc]init];
[uu setDateFormat:@"d MMMM , yyyy"];

NSLog(@"%@",[uu stringFromDate:yy]);

由于 GMT 偏移,会出现日期和时间的差异。NSLogging NSDate 给你时间处理偏移量。偏移量显示要从日期中添加或减去的值。在印度,它是 +5.30。始终确保保留偏移详细信息,因为如果不存在,它们可能会更改实际日期。希望这可以帮助。

于 2013-03-06T06:21:58.833 回答
0

dateWithString:创建并返回一个 NSDate 对象,其日期和时间值由国际字符串表示格式 (YYYY-MM-DD HH:MM:SS ±HHMM) 中的给定字符串指定。

  • (id)dateWithString:(NSString *)aString 参数 aString 以国际字符串表示格式指定日期和时间值的字符串 — YYYY-MM-DD HH:MM:SS ±HHMM,其中 ±HHMM 是时区偏移量GMT 后的小时和分钟(例如,“2001-03-24 10:45:32 +0600”)。您必须指定格式字符串的所有字段,包括时区偏移量,它必须具有加号或减号前缀。
于 2013-03-06T06:12:17.563 回答