Get current iPhone device timezone date and time from UTC-5 timezone date and time iPhone app?

前端 未结 3 1157
梦谈多话
梦谈多话 2020-11-30 20:20

In my iPhone application i am very struggling to convert the webservice response time to current device time. The webservice time in UTC-5 timezone. The app is

相关标签:
3条回答
  • 2020-11-30 20:39
    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

    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 !

    0 讨论(0)
  • 2020-11-30 20:41

    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.

    0 讨论(0)
  • 2020-11-30 20:43

    May this extension would be easier.

    Swift 4: UTC/GMT ⟺ Local (Current/System)

    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)")
    
    0 讨论(0)
提交回复
热议问题