[英]Get current iPhone device timezone date and time from UTC-5 timezone date and time iPhone app?
In my iPhone application i am very struggling to convert the webservice response time to current device time. 在我的iPhone应用程序中,我非常努力地将Web服务响应时间转换为当前设备时间。 The
webservice time in UTC-5 timezone
. webservice time in UTC-5 timezone
。 The app is worldwide use app. 该应用程序是全球范围内使用的应用程序。 So i have to convert the response time to current device timezone.
所以我必须将响应时间转换为当前设备的时区。 This is simple messaging app.
这是简单的消息传递应用程序。
When i have sent a message the time is "5:05 PM" (India Chennai timezone)
but when am retrieve time from webservice is "2012-07-16 07:33:01"
. 当我发送
message the time is "5:05 PM" (India Chennai timezone)
但是从webservice is "2012-07-16 07:33:01"
检索的时间webservice is "2012-07-16 07:33:01"
。 When i show the time in the app i should convert the time to device's local time. 当我在应用程序中显示时间时,我应该将时间转换为设备的本地时间。 I have tried in some way but i can't solve yet.
我已经尝试过某种方式,但是我还不能解决。 Code is:
代码是:
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter1 setLocale:[NSLocale currentLocale]];
//[dateFormatter1 setTimeZone:[NSTimeZone timeZoneWithName:@"IST"]];
[dateFormatters setTimeZone:[NSTimeZone systemTimeZone]];
NSDate *date = [dateFormatter1 dateFromString:dateStr];
NSLog(@"date : %@",date);
But the output date and time is 2012-07-16 02:03:01 +0000
I have stored this date/time in Coredata
and when I have retrieve from CoreData
and covert to NSString
using the below code, 但是输出日期和时间是
2012-07-16 02:03:01 +0000
我将此日期/时间存储在Coredata
并且当我使用以下代码从CoreData
检索并秘密转换为NSString
,
NSDateFormatter *dateFormatters = [[NSDateFormatter alloc] init];
[dateFormatters setDateFormat:@"dd-MMM-yyyy hh:mm"];
[dateFormatters setDateStyle:NSDateFormatterShortStyle];
[dateFormatters setTimeStyle:NSDateFormatterShortStyle];
[dateFormatters setDoesRelativeDateFormatting:YES];
[dateFormatters setTimeZone:[NSTimeZone systemTimeZone]];
dateStr = [dateFormatters stringFromDate:dateString];
NSLog(@"DateString : %@", dateStr);
The output date and time is " Today 7:33 AM
". 输出日期和时间为“
Today 7:33 AM
”。 It should be show " Today 5:05 PM
". 应该显示“
Today 5:05 PM
”。 Can anyone please save my day? 谁能救我一命? Please help to solve this issue.
请帮助解决此问题。 Thanks in advance.
提前致谢。
I have tested your scenario and added some code for your reference. 我已经测试了您的方案并添加了一些代码供您参考。 Please test the below and please let me know it is useful for you.
请测试以下内容,并让我知道它对您有用。
NSString *dateStr = @"2012-07-16 07:33:01";
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter1 dateFromString:dateStr];
NSLog(@"date : %@",date);
NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
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] autorelease];
NSDateFormatter *dateFormatters = [[NSDateFormatter alloc] init];
[dateFormatters setDateFormat:@"dd-MMM-yyyy hh:mm"];
[dateFormatters setDateStyle:NSDateFormatterShortStyle];
[dateFormatters setTimeStyle:NSDateFormatterShortStyle];
[dateFormatters setDoesRelativeDateFormatting:YES];
[dateFormatters setTimeZone:[NSTimeZone systemTimeZone]];
dateStr = [dateFormatters stringFromDate: destinationDate];
NSLog(@"DateString : %@", dateStr);
Thanks. 谢谢。
NSDate* currentDate = [NSDate date];
NSTimeZone* CurrentTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* SystemTimeZone = [NSTimeZone systemTimeZone];
NSInteger currentGMTOffset = [CurrentTimeZone secondsFromGMTForDate:currentDate];
NSInteger SystemGMTOffset = [SystemTimeZone secondsFromGMTForDate:currentDate];
NSTimeInterval interval = SystemGMTOffset - currentGMTOffset;
NSDate* TodayDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:currentDate];
NSLog(@"Current time zone Today Date : %@", TodayDate);
Swift 4 斯威夫特4
var currentDate = Date()
var CurrentTimeZone = NSTimeZone(abbreviation: "GMT")
var SystemTimeZone = NSTimeZone.system as NSTimeZone
var currentGMTOffset: Int? = CurrentTimeZone?.secondsFromGMT(for: currentDate)
var SystemGMTOffset: Int = SystemTimeZone.secondsFromGMT(for: currentDate)
var interval = TimeInterval((SystemGMTOffset - currentGMTOffset!))
var TodayDate = Date(timeInterval: interval, since: currentDate)
print("Current time zone Today Date : \(TodayDate)")
Hope it helps to another developers ! 希望对其他开发人员有所帮助! Happy Coding !
编码愉快!
May this extension would be easier. 希望此扩展会更容易。
Swift 4 : UTC/GMT ⟺ Local (Current/System) Swift 4 :UTC / GMT⟺本地(当前/系统)
extension Date {
// Convert local time to UTC (or GMT)
func toGlobalTime() -> Date {
let timezone = TimeZone.current
let seconds = -TimeInterval(timezone.secondsFromGMT(for: self))
return Date(timeInterval: seconds, since: self)
}
// Convert UTC (or GMT) to local time
func toLocalTime() -> Date {
let timezone = TimeZone.current
let seconds = TimeInterval(timezone.secondsFromGMT(for: self))
return Date(timeInterval: seconds, since: self)
}
}
// Try it
let utcDate = Date().toGlobalTime()
let localDate = utcDate.toLocalTime()
print("utcDate - (utcDate)")
print("localDate - (localDate)")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.