基本上,正如标题所说.我想知道我怎么能加1天NSDate
.
如果它是:
21st February 2011
Run Code Online (Sandbox Code Playgroud)
它会变成:
22nd February 2011
Run Code Online (Sandbox Code Playgroud)
或者如果是:
31st December 2011
Run Code Online (Sandbox Code Playgroud)
它会变成:
1st January 2012.
Run Code Online (Sandbox Code Playgroud) 在NSDate
没有其他信息的情况下,如何获得对象的年/月/日?我意识到我可以用类似的东西做到这一点:
NSCalendar *cal = [[NSCalendar alloc] init];
NSDateComponents *components = [cal components:0 fromDate:date];
int year = [components year];
int month = [components month];
int day = [components day];
Run Code Online (Sandbox Code Playgroud)
但这对于像NSDate
年/月/日这样简单的事情来说似乎有很多麻烦.还有其他解决方案吗?
如何转换,NSDate
以NSString
使得只有一年@"YYYY"格式输出到字符串?
我正在尝试实现dropBox同步,需要比较两个文件的日期.一个在我的dropBox帐户上,一个在我的iPhone上.
我想出了以下内容,但我得到了意想不到的结果.我想在比较这两个日期时我做了一些根本错误的事情.我只是使用了> <运算符,但我想这并不好,因为我正在比较两个NSDate字符串.开始了:
NSLog(@"dB...lastModified: %@", dbObject.lastModifiedDate);
NSLog(@"iP...lastModified: %@", [self getDateOfLocalFile:@"NoteBook.txt"]);
if ([dbObject lastModifiedDate] < [self getDateOfLocalFile:@"NoteBook.txt"]) {
NSLog(@"...db is more up-to-date. Download in progress...");
[self DBdownload:@"NoteBook.txt"];
NSLog(@"Download complete.");
} else {
NSLog(@"...iP is more up-to-date. Upload in progress...");
[self DBupload:@"NoteBook.txt"];
NSLog(@"Upload complete.");
}
Run Code Online (Sandbox Code Playgroud)
这给了我以下(随机和错误)输出:
2011-05-11 14:20:54.413 NotePage[6918:207] dB...lastModified: 2011-05-11 13:18:25 +0000
2011-05-11 14:20:54.414 NotePage[6918:207] iP...lastModified: 2011-05-11 13:20:48 +0000
2011-05-11 14:20:54.415 NotePage[6918:207] ...db is more up-to-date.
Run Code Online (Sandbox Code Playgroud)
或者这个恰好是正确的:
2011-05-11 14:20:25.097 NotePage[6903:207] dB...lastModified: 2011-05-11 13:18:25 +0000
2011-05-11 14:20:25.098 NotePage[6903:207] iP...lastModified: 2011-05-11 13:19:45 +0000 …
Run Code Online (Sandbox Code Playgroud) 我如何将NSString
" 01/02/10 "(意思是2010年2月1日)转换为NSDate
?我怎么能把NSDate
后面变成一个字符串?
我想将"2014-07-15 06:55:14.198000 + 00:00"这个字符串日期转换为Swift中的NSDate.
我试图获取当前日期NSDate()
和PHP time();
调用日期之间的区别,例如:NSDate(timeIntervalSinceReferenceDate: 1417147270)
.如何获得两个日期之间的时间差异.我想要一个比较两个日期的函数,if(seconds > 60)
然后它返回分钟,if(minutes > 60)
返回小时和if(hours > 24)
返回天数等等.
我该怎么办呢?
编辑:当前接受的答案正是我想要做的.我推荐它用于在PHP time()
函数使用的表单中获取两个日期之间的时间.如果你不是特别熟悉PHP,那就是1970年1月1日以秒为单位的时间.这对PHP的后端很有用.如果您使用像NodeJS这样的后端,您可能需要考虑下面的其他一些选项.
我在NSUserDefaults中存储了两种存储NSDate的方法.
// Set
NSDate *myDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];
// Get
NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
Run Code Online (Sandbox Code Playgroud)
// Set
NSDate *myDate = [NSDate date];
NSTimeInterval myDateTimeInterval = [myDate timeIntervalSince1970];
[[NSUserDefaults standardUserDefaults] setFloat:myDateTimeInterval forKey:@"myDateKey"];
// Get
NSTimeInterval myDateTimeInterval = [[NSUserDefaults standardUserDefaults] floatForKey:@"myDateKey"];
NSDate *myDate = [NSDate dateWithTimeIntervalSince1970:myDateTimeInterval];
Run Code Online (Sandbox Code Playgroud)
选项1
这似乎是紧凑和合乎逻辑的.但是,由于Date Formatter错误,我担心这会出错.
选项2
这似乎很笨拙.我也不确定它的准确性 - 在我做过的一次测试中,当我检索到日期时它已经超过了48秒,尽管Apple Docs说NSTimeInterval具有"亚秒精度".
无论我选择何种方法,都必须:
精确到一秒钟之内.
可读且可靠.
选项2是不准确的,因为我做错了什么?
你会使用这两个选项中的哪一个?
还有其他选择我不知道吗?
谢谢!
我正在开发一个应用程序,需要检查作业的截止日期.我想知道截止日期是否在下周内,如果是,则执行操作.
我能找到的大部分文档都在Objective-C中,我无法弄清楚如何在Swift中完成它.谢谢您的帮助!!
如何检查一个NSDate
属于今天?
我曾经使用前10个字符来检查它[aDate description]
.[[aDate description] substringToIndex:10]
像"YYYY-MM-DD"
这样返回字符串我将字符串与返回的字符串进行了比较[[[NSDate date] description] substringToIndex:10]
.
有更快速和/或更好的方式来检查?
谢谢.
nsdate ×10
objective-c ×6
ios ×4
swift ×4
cocoa-touch ×3
nscalendar ×2
nsstring ×2
cocoa ×1
date ×1
datetime ×1
iphone ×1
macos ×1
string ×1
xcode6 ×1