根据我们的应用程序规范,我们需要安排电话会议,而我的日程安排一直面临着日照时差的问题。
情况是这样的:今年11月3日,当我计划在11月4日下午5点打电话时,我们的日照时间发生了变化,那时我正在转换成格林尼治标准时间,并发送到服务器。如果我把格林尼治时间改为11月4日下午4点,而不是下午5点,尽管它只是正确的,但是根据用户的角度,他安排在下午5点而不是下午4点,那么该如何处理这个问题呢?
我要转换成GMT就像..。
- (NSDateComponents*) convert_to_gmt_time : (NSDate*) date
{
NSDate *localDate = date;
NSTimeInterval timeZoneOffset = [[NSTimeZone defaultTimeZone] secondsFromGMT];
NSTimeInterval gmtTimeInterval = [localDate timeIntervalSinceReferenceDate] - timeZoneOffset;
NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval];
NSDateComponents *date_comp = [[NSCalendar currentCalendar] components: NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:gmtDate];
return date_comp;
}
编辑:
我就是这样把格林尼治时间转移到当地的..。
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM dd, yyyy"];
NSDate *strt_date_loc = [gregorian dateFromComponents:start_date]; // start_date i'm filling after received from server as GMT.
// Get date string.
NSString *strt_date = [dateFormatter stringFromDate: strt_date_loc];
任何帮助都是非常感谢的。谢谢。
发布于 2013-11-03 23:02:25
有问题了,
问题是GMT转换,因为我确实考虑了当前的时间差到格林尼治标准时间,而不是在转换日期的时差。
我就是这么修好的..。
NSCalendar *cal = [NSCalendar currentCalendar];
[cal setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDateComponents *date_comp = [cal components: NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:localDate];
发布于 2013-10-28 21:42:35
一次又一次和…::不能将日期转换为时区。您可以将日期表示转换为时区。这不会改变日期。不要试图比约会更棘手。
如果您有一个本地格式的日期表示(即我们),只需使用本地日期格式化程序从它构建一个日期。然后将此日期发送到$anywhere。
在返回的过程中,阅读这个日期(不是它的一个表示),并使用本地格式化程序构建一个本地表示。
绝不将日期的任何本地表示发送到任何地方。GMT是一种本地代表。(G代表什么?)
发布于 2013-10-28 21:43:58
NSDate是绝对时间,而不是基于时区。所以这基本上就像在格林尼治标准时间上描述的那样存储时间。
所以你只需要得到一个时区是格林尼治标准时间的日历,然后得到组件。
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
NSDateComponents *date_comp = [calendar components: NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:gmtDate];
https://stackoverflow.com/questions/19650290
复制相似问题