- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我为 NSDate
创建了一个类别,它可以用工作日名称创建日期的字符串表示形式,例如 Thursday 5 January。
我想获取工作日索引并使用自定义的工作日数组,这些工作日存储在 plist 中并本地化为英语和西类牙语。
但是使用 NSDateComponents
给了我一些意想不到的结果。我正在请求 NSWeekdayOrdinalCalendarUnit
和 NSWeekdayCalendarUnit
并将结果输出到日志,我得到以下示例:
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSWeekdayOrdinalCalendarUnit | NSWeekdayCalendarUnit fromDate:self];
NSInteger weekdayOrdinal = [components weekdayOrdinal];
NSInteger weekdayNonOrdinal = [components weekday];
NSLog(@"Date: %@", [self description]);
NSLog(@"Device oridinal weekday: %d", weekdayOrdinal);
NSLog(@"Device non-oridinal weekday: %d", weekdayNonOrdinal);
2012-01-06 15:05:56.492 MyApp[964:11903] Date: 2012-01-05 16:13:46 +0000
2012-01-06 15:05:56.492 MyApp[964:11903] Device oridinal weekday: 1
2012-01-06 15:05:56.493 MyApp[964:11903] Device non-oridinal weekday: 5
这一天应该是星期四,序号应该是4,非序号应该是5
我不明白 1 是从哪里来的。
我找到了一种方法来调整它以确保我们使用带有 NSDateFormatter
的公历并指定 NSCalendar
(一周的第一个日期是星期一) 如下所示:
NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
[gregorian setFirstWeekday:2];
NSUInteger adjustedWeekdayOrdinal = [gregorian ordinalityOfUnit:NSWeekdayCalendarUnit inUnit:NSWeekCalendarUnit forDate:self];
NSDateFormatter *weekdayF = [[[NSDateFormatter alloc] init] autorelease];
[weekdayF setDateFormat: @"EEEE"];
[weekdayF setCalendar:gregorian];
[weekdayF setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_UK"]];
NSLog(@"The day of the week is: %@", [weekdayF stringFromDate:self]);
这会给我我想要的,但现在我必须将区域设置标识符存储在 plist 中以在西类牙语中使用,我更愿意保留的是 NSDateComponents
的第一个实例,但我不不明白为什么我有时会得到一个有趣的值。
我确实找到了用这个解决方案调整索引的解决方案:https://stackoverflow.com/a/3524462/662605
但是,老实说,我不想将它与 NSDateComponents
一起使用,我宁愿使用 NSDateFormatter
,但总的来说修复它会很酷第一个例子给我一个错误的 weekdayOrdinal
值。
对此有什么想法吗?
最佳答案
我认为您误解了 weekdayOrdinal
的含义。根据 NSDateComponents
的文档,获取 weekdayOrdinal
会返回接收器的工作日单位序数,其中工作日序数单位是“工作日在下一个更大的位置中的位置”日历单位,例如月份。例如,2 是该月第二个星期五的工作日序号单位。
根据这个推理,2012-01-05 正确地具有 1 b/c 的 weekdayOrdinal
,它是该月的第一个星期四。
关于ios - 来自 NSDateComponents 的有序工作日索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8760130/
我正在尝试创建一个脚本,该脚本在设定的时间段(上个月的 23 日和本月的 23 日)内获取工作日、日历日和工作日的计数。 我有以下脚本,我尝试使用 Worksheet Functions 但它不起作用
如何将 xts 对象子集以仅包含工作日(周一至周五,周六和周日除外)? 最佳答案 这是我要做的: library(xts) data(sample_matrix) sample.xts <- as.x
我一直在尝试计算在特定工作日内创建了多少个值没有成功: SELECT count(*) as count FROM packets WHERE strftime("%w", timeIn) = '1'
我正在编写一个脚本,它只在周一至周五上午 8 点至下午 5 点期间运行。问题是在它脱离 8-5 或 M-F while() 循环之后,它只是......不知道如何回到循环中。这让我觉得我可能以错误的角
我想得到上一季度的最后一个工作日(工作日),比如 2019.03.31 是星期天,所以我的要求是得到 2019.03.29 的输出。 我写了下面的代码,它工作得很好但看起来不整洁,在我看来 kdb 有
我想知道我在这个网格中选择日期时的工作日。我尝试了有效的 JavaScript 代码,但在 C# 中使用它时遇到了一些困难。 string startdate, enddate;
如标题所示,我正在为我的应用程序寻找解决方案,包括在工作日添加开放和关闭时间。 图像我的应用程序: View list days of the week View after selecting th
SELECT * FROM (`users`) JOIN `artistprofiles` AS art ON `art`.`user_id` = `users`.`id` WHE
我需要将这个函数翻译成swift。基本上它得到了本周的“n”日是什么。因此,例如,如果我将它与 NSDate().getWeekDay(0) 一起使用,它会给我 9 月 11 日星期日,依此类推。但似
我是工作日 SOAP API 的新手,我正在尝试弄清楚如何发送 SOAP 请求以使用 SOAPUI 进行身份验证。 任何建议将不胜感激。 最佳答案 Workday API 使用 WS-Security
我面临以下问题:我必须将当前日期与给定工作日和时间的特定时间点进行比较,如下所示: const myObj = { "weekday": "Tuesday", "timeOfDay": "10
我之前已经发布过相关内容,这有助于我获得以下 SQL: SELECT fname, MONTH( eventDate ) , IF( WEEKDAY( eventDate ) = 5,1,0)) A
尝试使用 moment.js 获得第二个星期四(例如)。本周四不。下一个。 2 个星期四内的日期。 我已经尝试过 moment().add(1, 'week').day(4) 仅获取下周的星期四(仅当
现在是 2017 年 10 月 8 日,星期日。 var weekday = Calendar(identifier: .iso8601).component(.weekday, from: Date
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
我们使用以下规则来标记延迟 2 天或更长时间的工作项: Changed Date , > , = , [Field], >[Field], =[Field], <=[Field], In, No
我有平日 jQuery UI 选项卡,如下所示,我想在当前工作日打开它们: Monday Tuesday Wednesday Thursday Friday
我想找到一周中某一天到一周中另一天的相对距离。假设以下 R 输入是从第 0 天开始的相对差异(以天为单位): day pmin( day %% 7, rev(day)%%7) [1] 0 1 2
我一直在寻找下个月第一,第二,第三或第四工作日(工作日)的日期。 我有以下代码: NSTimeInterval *lastDue; // unix time stamp from last due d
有一个 pandas 数据框 df,为了从日期列中获取工作日,我做了: df_raw['DayOfWeek'] = df_raw[str_date_colname].dt.strftime('%w')
我是一名优秀的程序员,十分优秀!