NSCalendar 返回明年第一周上周一的错误日期

2024-06-19

我使用下面的代码使用随机日期来计算上周一。哪个工作文件但我的代码在明年日期中断。下面是相同的代码:

NSDate *date = [NSDate dateWithTimeIntervalSince1970:1483620311.228];
NSLog(@"current date ===> : %@", date);

NSCalendar *calendar;
calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
[calendar setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en-US"]];
NSTimeZone *zone = [NSTimeZone timeZoneWithName:@"Australia/Sydney"];
[calendar setTimeZone:zone];

NSDateComponents *nowComponents = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitWeekOfYear | NSCalendarUnitWeekOfMonth | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitTimeZone fromDate:date];
if (nowComponents.weekday == 1) {    //If my date fall in sunday then I am moving to previous week.
    [nowComponents setWeekOfYear:[nowComponents weekOfYear]-1];
}

[nowComponents setWeekday:2]; //Monday

NSDate *previousMonday = [calendar dateFromComponents:nowComponents];
NSLog(@"previousMonday date ===> : %@", previousMonday);

在日志中我得到的是:

当前日期 ===> : 2017-01-05 12:45:11 +0000
上周一日期 ===> : 2018-01-01 12:45:11 +0000

我见过其他堆栈溢出资源,但没有得到预期的解决方案。


有一种更聪明的方法可以使用nextDateAfterDate of NSCalendar。在这种情况下,它可以向后搜索单个组件的匹配项NSCalendarUnitWeekday == 2

NSDate *date = [NSDate dateWithTimeIntervalSince1970:1483620311.228]; 
NSLog(@"current date ===> : %@", date);
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *previousMonday = [calendar nextDateAfterDate:date 
                                        matchingUnit:NSCalendarUnitWeekday  
                                               value:2 
                                             options:NSCalendarMatchNextTime | NSCalendarSearchBackwards];
NSLog(@"previousMonday date ===> : %@", previousMonday);

时区和区域设置并不重要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSCalendar 返回明年第一周上周一的错误日期 的相关文章

  • 如何消除错误 服务无效 请检查您的设置并尝试

    我一直在努力工作 一切都很顺利 只是突然间 当我尝试构建我的项目时 我在 xCode 中收到以下错误 1 在构建时的警报框中 服务无效 请检查您的设置并重试 0xE8000022 只需重新启动您的 iPod 或 iPhone 即可
  • 未调用NotificationServiceExtension

    iOS 10发布后 我使用NotificationServiceExtension用于图像通知 效果很好 但最近我发现有些不对劲 UNNotificationServiceExtension 中的代码不再调用 我不确定原因 所以我创建了一个
  • 强/弱/保留/__unsafe_unretained/分配

    合成属性的属性 保留 分配 保留 它被保留 旧值被释放并被分配 分配 仅分配 所有权财产 iOS5 强 弱 IOS4 保留 unsafe unretained 强 iOS4 保留 我是所有者 你不能释放它 在瞄准之前 保留 弱 iOS 4
  • 致命错误:找不到“Fabric/Fabric.h”文件

    我正在使用 xcode 6 3 1 OSX 10 10 3 并且我已经在本地系统上成功配置了 crashlytics 它工作正常 并通过 Fabric 应用程序发布构建 但是当我将相同的代码库转移到 teamcity 时 它向我显示以下错误
  • 从 Firebase Swift 检索信息的好方法

    我和我的朋友正在 swift 上开发一个 IOS 项目 并集成了 新的 Firebase 我们能够写入 Firebase 数据库 但是我们在检索数据时遇到了问题 我们有一个 tableView 控制器 我们希望从 Firebase 数据库填
  • 如何在可可中获取图像的作者

    我不明白为什么metaDic 总是为空 有一个代码 CFDataRef dataRef CGDataProviderCopyData CGImageGetDataProvider img CGImage UIImage img CGImag
  • Safari 不会通过 http/2 加载某些资源

    服务器上启用了 Http 2 昨天我注意到在 Iphone IOS 10 2 上未加载某些资源并出现错误 failed to load resource connecting to server is not possible 当我将 Ip
  • iOS:两个 UIAlert 具有两种不同的委托方法

    我有一个 UIAlert UIAlertView alertView UIAlertView alloc initWithTitle ok message Canc delegate self cancelButtonTitle OK ot
  • 快速转换:错误 - CGPathAddArc

    我正在尝试将我的 Swift 2 代码转换为最新语法 Swift 3 我收到以下错误 Nil 与预期的参数类型 UnsafePointer 不兼容 斯威夫特2代码 CGPathAddArc 路径 nil overlayView frame
  • ios - navigationItem.titleView 更新时闪烁

    我有一个UIView 拿着一个UIButton 设置为我的navigationItem titleView 当我更新此按钮的文本时 它会短暂闪烁 消失并随新文本重新出现 无论如何 当它改变时 是否可以保持它可见 那么 如果我更改 2015
  • 添加应用程序组后 Xcode 显示警告(将“应用程序组”权利添加到您的应用程序 ID)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在 Xcode 中添加应用程序组后 它显示警告 将 应用程序组 权限添加到您的应用程序 ID将 应用程序组容器 权限添加到您的应用程序 I
  • 使用PhotoKit可以获取“最近删除”中的照片吗?

    我已经扫描了 API 到目前为止什么也没发现 我会采取一个PHAssetCollection对于 最近删除 或者获取个人的方法PHAssets 我不推荐 或不推荐 但有一些解决方案outsideAPI 但可能仍然可以通过 AppStore
  • 在堆栈视图内的 Uilabel 之间创建垂直线 [重复]

    这个问题在这里已经有答案了 我想在代码中创建一个带有自定义标头的 UICollectionView 因此 我创建了 UICollectionViewCell 的子类来描述我的自定义标头 我想在标题中以水平线显示五个标签 因此 我创建了五个标
  • 核心图:如何隐藏图、轴和标签?

    我有一个图表 其中 Y 轴和 X 轴与主图一起绘制在默认绘图空间上 然后我有单独的辅助绘图空间 每个辅助绘图都有自己的 Y 轴 所有绘图的 X 轴都相同 我正在实现按钮来打开和关闭辅助图 我希望它基本上包括整个绘图空间 绘图 自定义 y 轴
  • 带过滤器的 AudioKit 导出文件

    我想用音频套件的许多过滤器覆盖现有的 m4a 文件 我的代码 file try AKAudioFile forReading recordVoiceURL player AKPlayer audioFile file delay AKVar
  • UIWebView didFinishLoading 多次触发

    我有一些代码需要在 a 之后运行UIWebView完成加载文档 为此我设置了UIWebView的委托给我的控制器 并实现了webViewDidFinishLoading method 这会被多次调用 具体取决于要加载的页面类型 我不确定是否
  • scrollViewDidScroll:在 UITableViewRowAnimation 上?

    当一个人使用一个UITableViewRowAnimation删除一行或添加一行时 有时如果该行位于表视图的最末端 则表会滚动 然而 即使它滚动它似乎并没有调用scrollViewDidScroll 关于代表 例如 我的委托中有以下代码 v
  • 具有硬件集成的 iOS 应用程序

    我想开发一个使用外部硬件插件的 iOS 应用程序 有点像 Squarehttps squareup com https squareup com 但是我在苹果的文档中找不到任何参考资料 有人能指出我正确的方向吗 如果您想使用 iPod 连接
  • ViewController.swift(界面)文件的用途是什么 - 在 Counterparts 中

    我刚刚注意到一个名为ViewController swift Interface 当我创建第一个 ViewController 时 Xcode 自动创建了它 Swift 中的类是否具有 需要与 Objective C 中相同的接口 并且由
  • 解雇ViewControllerAnimated:完成:在 iOS 8 上

    在 iOS dismissViewControllerAnimated completion 会导致presentedViewController being nil 在 iOS 8 中 presentedViewController仍然指

随机推荐

  • Java 泛型:如何为泛型类型指定类类型?

    我有一个 POJO 指定为 MyClass u where U是泛型类型参数 我正在尝试编写一个接受类引用的实用方法Class u
  • VS 2010 Web应用程序中的ASP.NET Web Api CRUD操作

    我尝试在 VS 2010 Web 应用程序中进行 ASP NET Web Api CRUD 操作 但为什么结果没有从源表返回所有整行 这是我的代码 路线 Globax asax protected void Application Star
  • WebClient读取错误页面的内容

    我有一个加载页面内容的应用程序 我使用 WebClient 类 即使服务器返回 404 500 等错误 我也需要检索内容 我需要这样的东西 WebClient wc new WebClient string pageContent try
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • Pandas 合并指标自定义值

    在 pandas 合并期间将指示器更新为更友好的消息的最快方法是什么 默认indicator True yields left only right only both 我想更新为Only present in last month s d
  • 在 django 中导入设置时出现奇怪的错误

    我有很多项目在 ubuntu 中使用 python2 7 和 virtualenv virtualenvwrapper 工作 在我的工作中 一些开发人员使用 macosx 和 windows 通常我像往常一样创建项目 django admi
  • 如何为 Windows 安装开源 Qt 库 5 二进制版本

    这个问题具体是关于Qt libraries 5 0 0 for Windows VS 2010 406 MB at http qt project org downloads http qt project org downloads 但我
  • 从 sbt 程序集运行 uber jar 会导致错误:无法找到或加载主类

    我有一个使用 sbt 程序集插件打包为 uber jar 的 Spark 作业 这build sbt指定一个可运行的 main 作为生成的 uber jar 的目标 mainClass in assembly Some com foo Ba
  • Android 中的垂直和水平滚动视图

    我真的很累了寻找垂直和水平滚动视图的解决方案 我读到框架中没有任何视图 布局实现此功能 但我需要这样的东西 我需要在其他布局中定义一个布局 子布局必须实现垂直 水平滚动才能移动 最初实现了一个逐像素移动布局的代码 但我认为这不是正确的方法
  • Kendo 网格列模板中的条件

    我需要在我的剑道网格列模板中应用一个条件 这是我的代码 columns field EmpName title Name template a href if empName null show xxx else I want to sho
  • 使用 OpenSSL 在 PHP 中进行 AES 加密/在 Node.js 中进行解密

    我正在使用 PHP 和 Nodejs 使用 OpenSSL 进行对称加密 PHP 使用 OpenSSL 库 Node js 解密基于实现的加密 问题是 Node js 中的解密文本只是部分正确 PHP 加密函数 function encry
  • 光滑的旋转木马不工作

    我一直在尝试简单地实现 Slick Carousel 的工作 我已按照 Git 页面上的说明进行操作 https github com kenwheeler slick https github com kenwheeler slick 这
  • Android NDK C++“wstring”支持

    我有用 C 编写的源代码 lib 现在我想在 Android NDK 项目 NDK 6 中编译并使用相同的源代码 lib 我能够编译大多数 C 文件 除了基于 std wstring 的功能 在 Application mk 中 当我指定时
  • 如何制作无限的jscrollpane?

    我之前已经实现过拖动滚动 但是创建无限滚动窗格的最佳方法是什么 当然不会有任何滚动条 我将实现拖动滚动 我想做的是在无限表面上实现动态加载 EDIT 当然 它实际上不会是无限的 我想问如何伪造它 您可以执行以下操作 AdjustmentCl
  • 我的 Reporting Services 2008 Web 服务 URL 仅显示目录列表

    我的机器上设置了报告服务 我可以访问http localhost 8080 Reports SQL2008 http localhost 8080 Reports SQL2008报告管理器工作正常 当我尝试访问 Web 服务 URL htt
  • 意外的查询结果

    为什么我从 sql server 得到以下结果 SELECT 12 C1 CONVERT int C2 CASE WHEN THEN equal ELSE not equal END C3 Sql Server Fiddle 演示 http
  • 打印 jasper 文件时执行报表 SQL 语句时出错

    我修改了一个旧项目 但无法确定这段代码有什么问题 使用下面的 jrxml它创造 jasper文件 当我打印 jasper 文件时 使用此代码JasperPrint jasperPrint JasperFillManager fillRepo
  • Android Realm.io:行/对象不再有效

    这是我的删除功能 它确实找到了workday1 object public static void delete Context context Workday workday Realm realm getRealm context re
  • 使用不带参数的 Split() 时,默认分隔符是什么?

    所以我看了看String Split 今天 C 中的方法 我意识到你也可以向它传递零参数 这是我从未考虑过的 使用时默认的分隔符是什么Split 没有任何参数 如果没有值 则为空白 来源自here https msdn microsoft
  • NSCalendar 返回明年第一周上周一的错误日期

    我使用下面的代码使用随机日期来计算上周一 哪个工作文件但我的代码在明年日期中断 下面是相同的代码 NSDate date NSDate dateWithTimeIntervalSince1970 1483620311 228 NSLog c