如何根据时区转换日期

how to convert date according to time zones

所以在我的项目中,一位来自美国的用户设定了某个时间,说是 10:30 上午 现在,当另一个国家的人看到那个时间时,应该根据他们的时区。

例如在美国现在是 5:30 在印度是 6:30 pm ,所以如果 5 小时后印度人看到那个,那么那个人应该看到 6:30 pm post

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

使用以下函数:

    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
}

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

我创建了以下函数来解决这个问题。 工作原理:假设这是您的当地时间转换为 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;
}