我知道这是重复的问题。我已经回顾了许多答案,但仍然没有得到任何解决方案。
我的问题是, 如果用户手动设置,我怎样才能获得设备时间..?
我实施了一个聊天应用。但在这个应用程序中,我有时间问题。如果用户手动设置了时间,那么我们如何识别它。?
我想获得正确的当前UTC时间。所以使用它,我可以识别设备时间和UTC时间之间的差异。
如果我们使用NSDate *currentDateAndTime = [NSDate date];
,那么它只根据设备返回UTC时间,而不是当前的UTC时间。
有没有简单的方法可以找到这个解决方案?
任何帮助都将不胜感激。
答案 0 :(得分:8)
iOS中没有可靠的时间源。你只需要单调和非单调的时间。
单调时间(或绝对时间)表示从过去的某个任意固定点开始的绝对经过的挂钟时间。 CACurrentMediaTime()
或mach_absolute_time
返回单调时间。
非单调时间表示机器对当前挂钟,时间时间的最佳猜测。随着系统时钟的变化,它可以向前和向后跳跃。 [NSDate date]
调用会返回它。
作为选项,您可以从http Date
响应标头中获取受信任的日期/时间。然后将它和当前单调时间(CACurrentMediaTime()
)保存在钥匙串中。
以下是获取当前可信时间的方法:
last known online time + (CACurrentMediaTime() - saved monotonic time)
另一种解决方案是使用NTP服务器。
答案 1 :(得分:2)
这可能会解决您的问题
NSDate * date = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSString *currentTime = [dateFormatter stringFromDate:datee];
NSLog(@"current time is:%@",currentTime);
答案 2 :(得分:0)
使用:NSDate *currentDateAndTime = [NSDate date];
这将为您提供GMT参考区的绝对日期和时间。
答案 3 :(得分:0)
使用此代码可以帮助您
NSDate * datee = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
NSString *localDateString = [dateFormatter stringFromDate:currentDate];
NSLog(@"%@",localDateString);
答案 4 :(得分:0)
试试这个:
迅速:
let date = NSDate()
let dateFormatter = NSDateFormatter()
let timeZone = NSTimeZone(name: "UTC")
dateFormatter.timeZone = timeZone
println(dateFormatter.stringFromDate(date))
的OBJ-C:
NSDate *date = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeZone:timeZone];
NSLog(@"%@", [dateFormatter stringFromDate:date]);
答案 5 :(得分:-1)
您可以使用此代码获取当前时间: -
let date = Date()
let formatter = DateFormatter()
formatter.timeZone = TimeZone(abbreviation: "GMT+0:00") //Current time zone
formatter.dateFormat = "HH:MM a"
let currentTime: String = formatter.stringFromDate(date)
print("My Current Time is \(currentTime)")
Result **
Output : - "My Current Time is 11:05 AM\n"