问题标签 [nsdatecomponents]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
720 浏览

ios - 为什么我从“2010-12-31 15:00:00 +000”得到“2010-01-01 00:00:00 +900”?

我有NSDate,如果我使用它会显示如下NSLog(@"%@", date.description);

2010-12-31 15:00:00 +0000

它会显示为好像我使用过NSLog(@"%@", [date descriptionWithLocale:[[NSLocale currentLocale] localeIdentifier]]);

2011 年 1 月 1 日星期六 12:00:00 AM 日本标准时间

但如果我使用它会显示如下NSLog(@"%@", [date formattedDateString]);

2010-01-01 00:00:00 +0900

我在哪里犯错?

0 投票
3 回答
792 浏览

cocoa - 使用 NSDate + NSDateComponents 计算“上周五”

我在使用 NSDate 和 NSDateComponents 计算相对于当前日期的特定日期时遇到了一些麻烦。例如,假设我想上周五。我尝试了以下方法:

但这只是返回当前日期,好像它无法弄清楚我要的是什么。

这感觉应该很简单,但我只是没有让它工作。任何指针?

0 投票
4 回答
17456 浏览

iphone - NSDate 减去一个月

我想要两个 NSInteger 一年,一个月回去一个月。例如,现在是2011-01我怎样才能得到2010-12。添加是一回事,但我想减去。

问候远藤

编辑:我的解决方案

0 投票
3 回答
435 浏览

cocoa-touch - 从 1600 年到 NSDate 的日期?

我有一个存储为自 1600 年 1 月 1 日以来我需要处理的天数的日期。这是我需要在我的应用程序中多次阅读的遗留日期格式。

以前,我一直在创建日历、空日期组件和根日期,如下所示:

然后,为了稍后将整数转换为日期,我使用这个:

(我从不在其他任何地方更改任何偏移值。)

问题是我rootDate在 iOS 和 Mac OS X 上的时间不同。在 Mac OS X 上,我要到午夜了。在 iOS 上,我得到 8:12:28。(到目前为止,这似乎是一致的。)当我添加我的天数后,奇怪的时间仍然存在。

在我的产品之前的版本中,我并不关心时间;现在我知道了。为什么在 iOS 上出现奇怪的时间,我该怎么办?(我假设小时差是 DST。)

我尝试将 rootComponents 的小时、分钟和秒设置为 0。这没有影响。如果我将它们设置为 0 以外的值,它会将它们添加到 8:12:28。我一直想知道这是否与闰秒或其他累积时钟变化有关。

或者这完全是在 iOS 上使用的错误方法?

0 投票
1 回答
1940 浏览

iphone - iPhone - NSDateComponents/NSCalendar 和经过时间(例如,3 小时前扫描。)

我想向用户显示以下经过的时间:

例如,

我使用以下方法来实现这一点,但是它并没有像我预期的那样工作。例如,如果我刚刚扫描了一些东西,那么它会输出:Scanned 9 seconds 16 hours ago,这显然是不正确的。它应该只是:9 秒前扫描

0 投票
2 回答
622 浏览

objective-c - 将具有给定时间的 NSDate 对象转换为具有相同时间和当前日期的对象的最有效方法

我目前正在创建一个处理学校日程安排的日程安排应用程序。每个计划都有一个包含开始时间和结束时间的期间对象数组。目前我将这些时间存储为 NSDate 对象,其中只有时间是真正相关的,并且每个 NSDate 对象都有一些与之关联的任意日期,这对我的应用程序来说基本上是微不足道的(它是 UIDatePicker 分配给它的任何日期,但我只使用 TimePickerMode )。我用这些日期做了很多事情。首先,我使用 NSDateFormatter 在 UITableView 中输出每个时间段的时间字符串表示形式。然后,我还尝试通过将 [NSDate 日期] 获取的当前时间与开始和结束时间进行比较来找到当天的当前时段。但我无法决定最好的方法来做到这一点。

目前,我使用 NSDateFormatter 将开始时间和结束时间转换为字符串,然后返回到现在日期与今天日期相同的日期。然后,我可以使用 - (NSComparisonResult)compare: 将开始日期和结束日期与当前日期进行比较来进行日期比较。但是,我可以认为这是非常低效的。

其他可能的方法是将每个 NSDate 转换为 NSDateComponents,然后使用 NSCalendar 将其转换回具有当前日期和相同原始时间的 NSDate。

或者,我可以采取不同的方法,完全放弃 NSDate 存储技术。相反,我可以将每个开始和结束时间存储为 NSDateComponents,然后为 UITableView 输出时间的格式化版本就足够简单了,然后我可以将 [NSDate date] 获得的日期转换为 NSDateComponents 用于逻辑比较以获得当前期间。

我看到了三到四种不同的方式来解决这个问题,实际上在讨论完之后我非常有信心我讨论的最后一种方式将是最有效的,因为它需要在不同类型的日期对象之间进行最少的运行时转换。我只是在寻找其他人的意见。

0 投票
3 回答
1361 浏览

iphone - 使用 2011-01-01 从 NSDateComponent 中获取错误的 NSDate

我从 NSDateComponents 和 NSDateFormatter 得到了一些奇怪的结果。

我有以下方法将给定日期的时间设置为上午 10 点

当我拨打以下电话时:

只有第二行,我得到了意想不到的结果:

问题出在第二条记录上,2011-01-01,只需将小时设置为 10,它就会变成 2011-12-31。

0 投票
7 回答
9897 浏览

objective-c - 使用 NSDateComponents 获取一周的第一天:更改年份

您好,我在设置 firstWeekDay 时遇到问题,这是我所做的:

如果 2011 年 1 月 1 日星期六是目标日期,我日历中的第一个星期似乎是 2011 年 12 月 26 日星期一,但实际上应该是 2010 年 12 月 26 日星期一。我怎样才能使它正确?

0 投票
6 回答
26463 浏览

objective-c - 如何设置现有 NSDate 的时间?

如何设置现有NSDate的时间?

那就是我有一个日期(比如当前日期/时间),但是想把它设置为一个特定的时间(例如上午 11.23 点)说。在目标 C 中执行此操作的最快方法是什么?

我正在查看NSCalendar和查看诸如dateByAddingComponents:toDate:options:, 和之类的方法dateFromComponents:,但这些方法似乎并没有完全满足我在这里需要的目标。例如:

  1. dateFromComponents:- 我必须计算出所有组件才能正常工作,这似乎有点矫枉过正
  2. dateByAddingComponents:toDate:options:- 我不想在我的情况下添加,而是“设置”时间。
0 投票
2 回答
448 浏览

iphone - 在给定时间(例如晚上 8 点)之后的一天中某个时间的 NSArray 中找到 NSDate?

Objective-C 中是否有一种快速的方法来识别 NSArray 中的 NSDate 在给定时间(例如晚上 8 点)之后具有一天中的某个时间?

除了手动遍历数组中的每个 NSDate 然后使用 NSDateComponents 来打破小时/分钟/秒之外,我什么都看不到......甚至不确定是否有一种简单的方法可以从 NSDate 中获取时间一种代表 24 小时一小部分的时尚,因为这可能会有所帮助。(例如,在这种情况下,下午 6 点将是 18/24 = 0.75)