如何根据时区转换日期
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;
}
所以在我的项目中,一位来自美国的用户设定了某个时间,说是 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;
}