Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSTimeZone isDaylightSavingTime给出错误的值_Ios_Objective C_Dst_Nstimezone - Fatal编程技术网

Ios NSTimeZone isDaylightSavingTime给出错误的值

Ios NSTimeZone isDaylightSavingTime给出错误的值,ios,objective-c,dst,nstimezone,Ios,Objective C,Dst,Nstimezone,目前,GMT-0700(美国/太平洋地区)已处于日光节约状态 但我从Ntimezone得到“不” NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:secondsFromGMT]; //Getting timezone as GMT-0700 BOOL isDaylightSavingTime = [timeZone isDaylightSavingTime]; //getting boolean value as NO

目前,GMT-0700(美国/太平洋地区)已处于日光节约状态

但我从Ntimezone得到“不”

NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:secondsFromGMT]; //Getting timezone as GMT-0700 
BOOL isDaylightSavingTime = [timeZone isDaylightSavingTime]; //getting boolean value as NO
如何解决这个问题


要求:我想知道,我的接收器是否使用dayLightSavingTime。我将只获取接收器偏移值。我必须支持不同的时区()…执行此操作的最佳方法是什么这不是一个错误的值。您可以获得GMT-0700时区,但这不是太平洋时区。要创建太平洋时区,您需要:

timeZone = [NSTimeZone timeZoneWithName:@"PST"];
这是apple文档中的简短描述:

+(instancetype)时区ForSeconds fromGMT:(NSInteger)秒

Description返回与格林威治平均值的时区对象偏移 按给定的秒数计算时间。新时区的名称为 GMT+/-偏移量,以小时和分钟为单位使用此选项创建的时区 方法从不使用夏令时,且偏移量为常量否 不管日期如何


这不是一个错误的值。您可以获得GMT-0700时区,但这不是太平洋时区。要创建太平洋时区,您需要:

timeZone = [NSTimeZone timeZoneWithName:@"PST"];
这是apple文档中的简短描述:

+(instancetype)时区ForSeconds fromGMT:(NSInteger)秒

Description返回与格林威治平均值的时区对象偏移 按给定的秒数计算时间。新时区的名称为 GMT+/-偏移量,以小时和分钟为单位使用此选项创建的时区 方法从不使用夏令时,且偏移量为常量否 不管日期如何


时区ForSecondsFromGMT
不够具体

最准确的方法是使用(完整)区域名称创建时区:

NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"America/Los_Angeles"];

时区ForSecondsFromGMT
不够具体

最准确的方法是使用(完整)区域名称创建时区:

NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"America/Los_Angeles"];


其他提到时区名称的答案是正确的,但我认为还有一个细节没有提到。
timeZoneForSecondsFromGMT
不起作用的原因是GMT没有夏令时(或夏令时,在其他一些国家更合理地称之为夏令时)。GMT不向前或向后跳跃;它总是以每秒一秒的速度向前移动。由于您要求GMT提供固定的秒数,因此结果中也没有GMT。如果它给您一个遵守夏令时的时区,则GMT的秒数必须每年更改两次。但是,由于您要求的是固定的秒数,因此您得到的结果不会这样做,并且不会报告夏令时生效。

其他提到时区名称的答案是正确的,但我认为还有一个细节没有提到。
timeZoneForSecondsFromGMT
不起作用的原因是GMT没有夏令时(或夏令时,在其他一些国家更合理地称之为夏令时)。GMT不向前或向后跳跃;它总是以每秒一秒的速度向前移动。由于您要求GMT提供固定的秒数,因此结果中也没有GMT。如果它给您一个遵守夏令时的时区,则GMT的秒数必须每年更改两次。但是,由于您要求的是固定的秒数,因此您得到的结果不会这样做,并且不会报告夏令时生效。

PST?我从来没有听说过有这样名字的时区。我听说过美国/太平洋。您也可以使用此字符串创建时区。PST是一个缩写。请参阅文档。如果我想检查“isDayLight”,这只是一个非常基本的问题。为什么我要使用“PST”呢?缩写不是标准化的,实际上取决于你使用的语言。PST也可以表示“菲律宾标准时间”。真的,不要用缩写来创建时区。仅将其用于向用户显示。PST?我从来没有听说过有这样名字的时区。我听说过美国/太平洋。您也可以使用此字符串创建时区。PST是一个缩写。请参阅文档。如果我想检查“isDayLight”,这只是一个非常基本的问题。为什么我要使用“PST”呢?缩写不是标准化的,实际上取决于你使用的语言。PST也可以表示“菲律宾标准时间”。真的,不要用缩写来创建时区。使用它们只是为了向用户显示它们。如果我想查看“isDayLight”,这只是一个非常基本的问题。我为什么要使用“PST”呢?真的,苹果应该反对
TimeZoneWithAbRevision
。不同的时区有相同的缩写,例如“菲律宾标准时间”。此外,夏令时的变体有时缩写为“PDT”。夏令时在很大程度上取决于地区。只有UTC的差异太模糊了。我们应该支持这些时区(太平洋、东部、中部、山区),并且应该检查它是否节省日光。我如何做到这一点
America/Los_Angeles
是最正确的使用值
US/Pacific
也可以,但主要是为了向后兼容。我建议删除关于缩写的部分。时区缩写有很多问题,通常应该避免使用。如果我想查看“isDayLight”,这只是一个非常基本的问题。我为什么要使用“PST”真的,苹果应该反对
timezoneWithAbrevision
。不同的时区有相同的缩写,例如“菲律宾标准时间”。此外,夏令时的变体有时缩写为“PDT”。夏令时在很大程度上取决于地区。只有UTC的差异太模糊了。我们应该支持这些时区(太平洋、东部、中部、山区),并且应该检查它是否节省日光。我如何做到这一点
America/Los_Angeles
是最正确的使用值
US/Pacific
也可以,但它主要用于向后比较