所有美国假期的 NSDate 列表
我正在寻找一种方法将所有美国假期作为 NSDate
数组。有办法实现吗?
I'm seeking a way to get all American holidays as an array of NSDate
s. Is there a way to implement that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果你只想要美国联邦假期,我写了这个方法。不过,您可以使用这些技术来计算任何假期。
If you only want US federal Holidays, I wrote this method. You could use these techniques to calculate any holiday though.
斯威夫特4:
检查此链接以获取美国复活节和阵亡将士纪念日的假期日期。
使用 NSDate 获取复活节日期
我编辑了上面的链接代码添加更多假期:
获取日期:
对于假期数组:
Swift 4:
Check this link for getting the US Holiday Dates for easter and memorial day.
Using NSDate to get date for Easter
I edited the above link code add some more Holidays:
Get date:
For holiday array:
解析 RSS 源。您可以通过普通的 XML 解析来完成此操作,或者使用专门的解析器。 MWFeedParser 是一种选择。
parse the RSS-feed. you can do so by normal XML-parsing, or you use a specialized parser. MWFeedParser would be one option.
谢谢基兰!我发现您的代码对于我正在构建的MacOS应用程序非常有帮助,该应用程序依赖于美国股市何时开放或关闭。
在您的扩展的基础上,我添加了一些附加功能来处理除实际假期之外的假期观察。此外,一些假期(例如劳动节)没有被捕获,因为 switch case 正在寻找 0 的 DateComponent.day,只需将其更改为“_”。
例如,我将: 更改
为:
下面的示例特定于圣诞节,圣诞节并不总是在 12 月 25 日庆祝。如果圣诞节是星期六,那么它就是 12 月 24 日星期五,或者如果它是星期日,那么它就是 12 月 26 日星期一。同样的逻辑也适用于任何其他假期:
这可以在您的 isUSHoliday 中使用,如下所示:
这样如果日期是实际假期本身,或者是观察到的日期(如果是周末),则结果为 true。
Thank you Kiran! I found your code very helpful for a MacOS app I'm building that relies on when the US Stock Markets are open or closed.
Building on your extension, I added some additional functionality to handle holiday observations in addition to the actual holidays. Also, some of the holidays like Labor Day weren't being caught because the switch case was looking for a DateComponent.day of 0 which just needed to be changed to '_'.
For example, I changed:
to this:
The example below is specific to Christmas, which is not always observed on the 25th of December. If Christmas falls on a Saturday, then it's observed Friday December 24, or if it falls on a Sunday it's observed Monday December 26. Same logic applies to any other holiday as well:
This can be used in your isUSHoliday like so:
That way the result is true if the date is either the actual holiday itself or the day it is observed if it falls on a weekend.