标签: nsdate

比较没有时间组件的NSDates

在一个快速的操场上,我一直在使用

NSDate.date() 
Run Code Online (Sandbox Code Playgroud)

但是,这总是会附加时间元素.对于我的应用程序,我需要忽略时间元素.这在Swift中可能吗?怎么做到呢?即使我可以将时间元素设置为每个日期也同时工作.

此外,我正在尝试比较两个日期,目前我正在使用以下代码:

var earlierDate:NSDate = firstDate.earlierDate(secondDate)
Run Code Online (Sandbox Code Playgroud)

这是唯一的方法,还是可以忽略时间元素的方式?例如,如果他们是同一天,但不同的时间,我不想要结果.

time nsdate foundation ios swift

54
推荐指数
9
解决办法
4万
查看次数

两个NSDate对象之间的差异 - 结果也是一个NSDate

我有两个NSDate对象,我想要两者之间的差异,结果应该再次是一个NSDate对象.知道怎么做到这一点?

在这里,我试图解决一个独特的问题,我必须找出经过的时间,然后本地化经过的时间.如果我在NSDate对象中有经过的时间,我可以本地化它.所以想到创建一个NSDate对象,它的时间组件与两个日期之间的时间间隔相同,这样我就可以使用NSDateFormatter对它进行本地化.

iphone cocoa-touch objective-c nsdate ios

53
推荐指数
3
解决办法
5万
查看次数

核心数据保存错误(NSValidationErrorKey,Cocoa错误1570)保存NSDate

我在Xcode中保存到Core数据对象时遇到错误.

Xcode说错误是在NSDate变量'datum'中,但我几乎尝试了所有内容.错误是:

2011-07-12 18:01:29.068 WeekLijstje[3205:207] Core Data Save Error
NSValidationErrorKey    datum
NSValidationErrorPredicate  (null)

NSValidationErrorObject
<DagLijst: 0x6e2fcd0> (entity: DagLijst; id: 0x6e2fd30 <x-coredata:///DagLijst/t99F423FC-AAE9-4692-9264-EF0FF7A020572> ; data: {
    Voedsel = nil;
    datum = nil;
    hoeveelheid = 0;
    punten = 0;
})
NSLocalizedDescription:The operation couldn’t be completed. (Cocoa error 1570.)
Run Code Online (Sandbox Code Playgroud)

一个小代码snipet:

        DagLijst *newDaglijst = [NSEntityDescription insertNewObjectForEntityForName:@"DagLijst" inManagedObjectContext:self.managedObjectContext];

        NSDate *selDatum = [NSDate date];
        newDaglijst.punten = [NSNumber numberWithInteger:10];
        newDaglijst.hoeveelheid = [NSNumber numberWithInt:100];
        newDaglijst.Voedsel = geselecteerdVoedsel;
        newDaglijst.datum = selDatum;
        NSError *error = nil;
        if (![newDaglijst.managedObjectContext save:&error]) {
... …
Run Code Online (Sandbox Code Playgroud)

xcode core-data nsdate

51
推荐指数
1
解决办法
3万
查看次数

NSDate - 将日期转换为GMT

我需要能够将NSDate值转换为GMT日期.

如何将NSDate值转换为GMT格式的NSDate值,与iPhone设备使用的日期区域设置无关?

objective-c nsdate gmt ios swift

50
推荐指数
5
解决办法
6万
查看次数

如何根据NSDate计算年龄

如何根据出生日期计算年龄,格式为6/24/1976周一/日期/年...

date nsdate foundation ios

50
推荐指数
3
解决办法
3万
查看次数

如何将NSDate对象设置为午夜?

我有一个NSDate对象,我想将它设置为任意时间(比如半夜),这样我可以使用timeIntervalSince1970的功能一致,而不用担心时间来检索数据创建的对象.

我尝试使用NSCalendar一些Objective-C方法来修改它的组件,如下所示:

let date: NSDate = NSDate()
let cal: NSCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)!

let components: NSDateComponents = cal.components(NSCalendarUnit./* a unit of time */CalendarUnit, fromDate: date)
let newDate: NSDate = cal.dateFromComponents(components)
Run Code Online (Sandbox Code Playgroud)

上述方法的问题在于您只能设置一个时间单位(/* a unit of time */),因此您只能使用下列其中一个准确度:

  1. 小时
  2. 分钟

有没有办法同时设置小时,分钟和秒并保留日期(日/月/年)?

datetime nsdate nscalendar ios swift

50
推荐指数
5
解决办法
3万
查看次数

如何为NSDate添加小时数?

我有一个转换为double值的日期并保存在数据库中.现在,我想比较currentDate > myDataBaseDate + 8几小时,即我希望将8小时添加到myDataBaseDate.我正在将日期转换为双倍值.那么如何从我的数据库保存日期开始8小时后.我该如何比较

if (currentDateTime > DateFromdatabaseValue + DateByAdding8HoursInDataBase)
Run Code Online (Sandbox Code Playgroud)

objective-c nsdate iphone-sdk-3.0

49
推荐指数
2
解决办法
5万
查看次数

49
推荐指数
4
解决办法
3万
查看次数

将UTC日期格式转换为本地nsdate

我从我的服务器获取UTC时区的字符串日期,我需要将其转换为本地时区.

我的代码:

let utcTime = "2015-04-01T11:42:00.269Z"    
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(name: "UTC")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
let date = dateFormatter.dateFromString(utcTime)
println("utc: \(utcTime), date: \(date)")
Run Code Online (Sandbox Code Playgroud)

这个印刷品 -

utc:2015-04-01T11:42:00.269Z,日期:可选(2015-04-01 11:42:00 +0000)

如果我删除

dateFormatter.timeZone = NSTimeZone(name: "UTC") 
Run Code Online (Sandbox Code Playgroud)

它打印

utc:2015-04-01T11:42:00.269Z,日期:可选(2015-04-01 08:42:00 +0000)

我的当地时区是UTC +3,在第一个选项中,我在第二个选项中得到UTC,我得到了UTC -3

我应该得到

utc:2015-04-01T11:42:00.269Z,日期:可选(2015-04-01 14:42:00 +0000)

那么如何将UTC日期格式转换为本地时间?

timezone date nsdate ios swift

48
推荐指数
6
解决办法
7万
查看次数

Swift - 检查时间戳是昨天,今天,明天还是X天前

我正在尝试弄清楚如何确定给定时间戳今天是否发生,或+1/-1天.基本上,我想做这样的事情(Pseudocode)

IF days_from_today(timestamp) == -1 RETURN 'Yesterday'
ELSE IF days_from_today(timestamp) == 0 RETURN 'Today'
ELSE IF days_from_today(timestamp) == 1 RETURN 'Tomorrow'
ELSE IF days_from_today(timestamp) < 1 RETURN days_from_today(timestamp) + ' days ago'
ELSE RETURN 'In ' + days_from_today(timestamp) + ' ago'
Run Code Online (Sandbox Code Playgroud)

至关重要的是,它需要在Swift中,我正在努力使用NSDate/NSCalendar对象.我开始研究这样的时差:

let calendar = NSCalendar.currentCalendar()
let date = NSDate(timeIntervalSince1970: Double(timestamp))
let timeDifference = calendar.components([.Second,.Minute,.Day,.Hour],
    fromDate: date, toDate: NSDate(), options: NSCalendarOptions())
Run Code Online (Sandbox Code Playgroud)

然而,以这种方式进行比较并不容易,因为.Day根据一天中的时间和时间戳而不同.在PHP中,我只是使用mktime来创建一个基于一天开始的新日期(即mktime(0,0,0)),但我不确定在Swift中最简单的方法.

有没有人对如何处理这个问题有个好主意?也许NSDate或类似的东西的扩展最好?

nsdate nscalendar ios swift

48
推荐指数
5
解决办法
3万
查看次数