如何根据时区转换日期

时间:2016-04-14 11:52:40

标签: ios swift nsdate

因此,在我的项目中,来自美国的用户设定了一些时间说它是上午10:30 现在,当某个人看到那个时间,然后应该根据他们的时区。

例如美国的例子现在是早上5:30 在印度它是下午6:30,所以如果在5个小时之后,印度的一个人看到那个人应该在下午6:30看到那个帖子

3 个答案:

答案 0 :(得分:0)

使用php函数gmdate()
string gmdate(string $ format [,int $ timestamp = time()]) 与date()函数相同,但返回的时间是格林威治标准时间(GMT)。 参数format输出日期字符串的格式。请参阅date()函数的格式设置选项。 timestamp可选的timestamp参数是整数Unix时间戳,如果未给出时间戳,则默认为当前本地时间。换句话说,它默认为time()的值。返回值返回格式化的日期字符串。如果将非数字值用于时间戳,则返回FALSE并发出E_WARNING级别错误。 在timestamp中添加间隔。 例如,如果GMT区域为5,则添加时间戳+ 5 * 60 * 60

答案 1 :(得分:0)

使用以下功能:

    class func getDateWithFormat(format: String) -> NSDate {
    var dateFormatter: NSDateFormatter = NSDateFormatter()
    dateFormatter.timeZone = NSTimeZone.localTimeZone()
    dateFormatter.dateFormat = format
    var newDate: NSDate = dateFormatter.dateFromString(dateFormatter.stringFromDate(NSDate()))
    return newDate
}
  

例如:var todaysDate:NSDate = NSDate.getDateWithFormat(" dd:mm:yyyy hh:mm:ss a")

答案 2 :(得分:0)

我创建了以下函数来解决这个问题。 工作原理:假设这是您转换为GMT零的当地时间 - 2016-04-14 21:00:00 +0000

当我使用以下功能进行转换时,我在新德里印度,格林威治标准时间+05:30,然后我将在凌晨2:30获得时间。

+(NSString*)getLocalTimeFromGMTzero : (NSString*)GMTzerioTimeString {

    NSDateFormatter *df = [NSDateFormatter new];
    [df setDateFormat:@"yyyy-MM-dd HH:mm"];    

    //Create the date assuming the given string is in GMT
    df.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
    NSDate *date = [df dateFromString:GMTzerioTimeString];

    //Create a date string in the local timezone
    df.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:[NSTimeZone localTimeZone].secondsFromGMT];
    NSString *localDateString = [df stringFromDate:date];
    NSLog(@"date = %@", localDateString);

    return localDateString;
}