当前位置: 首页 > 知识库问答 >
问题:

如何获取ISO-8601格林尼治时间/协调世界时年周数

裴哲
2023-03-14

在Objective C中,如何获取GMT/UTC日期并应用ISO-8601规则来获取周号?

当使用gmdate('w')语句时,PHP以ISO-8601格式生成一年中的星期数。但是,在Objective C中,当您试图只取GMT/UTC日期并获取周号时,这与Objective C不匹配,因为它不是以ISO-8601的方式进行的。以下是PHP文档使用'w'参数对ISO-8601的说明:

比较这两个示例,一个在PHP中,另一个在Objective C中,您将得到两个不同的结果:

NSCalendar *calender = [NSCalendar currentCalendar];
NSDateComponents *dateComponent = [calender components:(NSWeekOfYearCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:[NSDate date]];
NSString *sWeekNum = [NSString stringWithFormat:@"%ld",(long)dateComponent.weekOfYear];
if ([sWeekNum length] < 2) {
  sWeekNum = [NSString stringWithFormat:@"0%ld",(long)dateComponent.weekOfYear];
}
NSLog(@"%@",sWeekNum);
<?php
error_reporting(E_ALL);
ini_set('display_errors','On');

// SET OUR TIMEZONE STUFF
try {
    $sTimeZone = 'GMT';
    if (function_exists('date_default_timezone_set')) {
        date_default_timezone_set($sTimeZone);
    } else {
        putenv('TZ=' .$sTimeZone);
    }
    ini_set('date.timezone', $sTimeZone);
} catch(Exception $e) {}
echo gmdate('W') . "\n";

例如,今天对我来说是2016年1月26日上午1:48,美国东部时间。目标C发出05,而PHP发出04

共有1个答案

慕宏博
2023-03-14

NScalendar可以初始化为ISO8601日历。

NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierISO8601];
unsigned int weekOfYear = (unsigned int)[calender component:NSCalendarUnitWeekOfYear fromDate: [NSDate date]];
NSString *sWeekNum = [NSString stringWithFormat:@"%02u",weekOfYear];
NSLog(@"%@", sWeekNum);
 类似资料:
  • 问题内容: 我需要在格林尼治标准时间之前隐蔽毫秒(在Android应用中),例如: 当我通过此代码将其转换时: 结果是。当我只使用以下结果时: 不幸的是,结果看起来不正确,看起来像我的当地时间。我尝试通过此服务转换相同的数字,结果是,我认为是正确的。所以我有两个小时的差异。有人有任何建议/提示我的转换有什么问题吗? 问题答案: 如果结果看起来不正确,则就不足为奇了,因为将日期转换为本地时区中的字符

  • 问题内容: Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(“GMT”)); java.util.Date fromDate = cal.getTime(); System.out.println(fromDate); 上面的代码不在格林尼治标准时间打印日期,而是在本地时区打印。我如何从当前日期获得与格林尼治标准时间等效的日期(假设

  • 问题内容: 我有一台服务器设置为EST,并且数据库中的所有记录均设置为EST。我想知道如何将其设置为GMT。我想向用户提供时区选项。 问题答案: 无论服务器位于哪个GMT时区,这都是一种获取任何时区的时间和日期的极其简单的方法。这是通过和函数完成的。该函数通常为我们提供GMT时间,但是通过对该函数做些技巧,我们可以获得GMT + N或GMT-N,这意味着我们可以获得任何GMT时区的时间。 例如,如

  • 在PowerShell中,有没有办法将ISO 8601指定的持续时间转换成DateTime对象?例如,PT30M是30分钟前,因此如果现在的时间是< code>2019-07-31 17:00:00,我希望时间戳为< code>2019-07-31 16:30:00。 我尝试过显而易见的 - 但这(毫不奇怪地失败了) Get Date:输入对象不能绑定到命令的任何参数,因为命令不接受管道输入,或者

  • 问题内容: 我如何获得当前时间?(在JavaScript中) 不像您的计算机时间: 但是真实的世界时间呢? 我是否需要连接到服务器(很可能是,是哪一个?以及如何从中获取时间?) 我从Google进行的所有搜索都返回。 编辑: 如果用户的计算机时间错误,我想避免显示不正确的时间。 问题答案: 首先,要获得准确的GMT时间,您需要一个值得信赖的来源。这意味着某个服务器在某处。Javascript通常只

  • 在ISO 8601中,持续时间的格式为<code>P[n]Y[n]M[n]DT[n]H[n]M[n]S。 例子: 20秒: 一年两个月三天四小时五分钟六秒: 问题: 给定一个包含iso 8601格式的持续时间的字符串。我想获得这段时间的总秒数。标准C 11中推荐的实现方式是什么? 备注: 例如,boost DateTime中有ptime from _ iso _ string(STD::strin