if (datStartDate > datEndDate) {
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.我知道有一个isEqual,等等,但我怎么表现"大于"?
两者都有NSDate.
是date1 == date2不是比较有效的方法是什么?如果没有,那么正确的选择是什么?
这是我的代码:
- (NSDate*) dateWithNoTime {
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:flags fromDate:self];
NSDate* dateOnly = [calendar dateFromComponents:components];
return dateOnly;
}
- (BOOL) sameDayAsDate:(NSDate*)dateToCompare {
NSDate *date1 = [self dateWithNoTime];
NSDate *date2 = [dateToCompare dateWithNoTime];
return date1 == date2; // HERE IS WHERE THINGS SEEM TO FAIL
}
Run Code Online (Sandbox Code Playgroud) 我试图强制用户使用日期选择器选择将来的日期.我显然使用了compare:方法,但是,当我执行以下代码时,即使它与[NSDate date]的日期相同,它也会告诉执行if语句.这是我的代码:
if ([datePicker.date compare:[NSDate date]] == NSOrderedAscending) // If the picked date is earlier than today
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hmm, this date is earlier than today"
message:@"The date you've selected is earlier than today's date, please pick another"
delegate:nil
cancelButtonTitle:@"Okay, I'll pick another"
otherButtonTitles:nil];
// Show the alert
[alert show];
// Release the alert
[alert release];
}
Run Code Online (Sandbox Code Playgroud) 如何比较两个不同的日期以找出哪个日期更晚?例如,date1我将在下载一些数据后存储一个日期,然后date2,我将存储当前日期.然后我需要检查哪一个更大/更晚:类似的东西if(date1>date2).
题:
我需要比较2次 - 当前时间和一组.如果设定的时间是将来,请查看剩余的时间,直到所述未来时间.
其他信息:
我目前正在使用
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let hour = components.hour
let minutes = components.minute
Run Code Online (Sandbox Code Playgroud)
我从SO的另一个答案中偷走了如何以Int格式获取当前时间.然后我将未来的时间分成小时(Int)和分钟(Int)并比较那些......但是当你超过小时障碍时,这会变得奇怪.
我有一系列字典.在每个字典中,有dateOfInfo一个键(一个NSDate)和其他几个东西.我想按每个字典对数组进行排序,dateOfInfo最新的是第一个结果.
我怎样才能做到这一点?
我有三个日期:(1)previousDate(2)currentDate(3)nextDate,我想检查currentDate是否晚于上一个日期,早于nextDate.我怎么做?
我是iPhone开发人员的新手,
我想比较两个日期,第一个日期将来自数据库说,newDate第二个是今天的日期,
如果今天更大,那么newDate我想显示警报.
这是我的代码片段,
NSString *newDate = [formatter stringFromDate:st];
NSDate *today=[[NSDate alloc]init];
if ([today compare:newDate] == NSOrderedDescending)
{
NSLog(@"today is later than newDate");
}
else if ([today compare:newDate] == NSOrderedAscending)
{
NSLog(@"today is earlier than newDate");
}
else
{
NSLog(@"dates are the same");
}
Run Code Online (Sandbox Code Playgroud)
但它崩溃了,编译时也向我显示了警告 [today compare:newDate]
任何帮助将不胜感激.
我得到24小时格式的两个日期字符串如何比较?例如
当前日期:2013-06-27 13:51
服务器日期:2013-06-27 11:51
当前日期不能大于服务器日期.请帮忙
这是日期选择器
NSDateFormatter *datePickerFormat = [[NSDateFormatter alloc] init];
[datePickerFormat setDateFormat:@"yyyy-MM-dd HH:mm"];
self.myCurrentDate = [datePickerFormat stringFromDate:self.myDatePicker.date];
NSDate *myDate = [datePickerFormat dateFromString:self.myCurrentDate];
Run Code Online (Sandbox Code Playgroud)
我无法将其转换为24小时格式,并且最终日期时间显示不正确.
我想比较两个日期,并在一个小于或等于另一个时做某事,我试着这样做:
if ([self.system.systemInbetriebnahme compare:date] == NSOrderedDescending)
return nil;
Run Code Online (Sandbox Code Playgroud)
但这样就消除了它们两者相等的情况是否有办法比较日期>=?
谢谢
更多细节: 我有一个双维数组的日期,我有一个日期存储在核心数据(通过日期选择器),我通过循环比较两个日期与规则:数组中的日期必须是大于或等于存储在数据库中的输入日期.
最新编辑:
我导入一个csv文件,在解析和格式化后给我两行(一行用于数字值,一行用于日期).在这里,我对约会很感兴趣.
我将所有这些存储在一个数组中并在检查此函数中数据的一致性后保存:
for (NSArray * row in array) {
// Handle import if there are at least two rows
if (row.count > 1) {
dispatch_sync(dispatch_get_main_queue(), ^{
// Try to import value,date formatted row
double value = [row[0] doubleValue];
NSDate * date = [dateFormatter dateFromString:row[1]];
//else {
// Try to import date,value row
if (date && value != 0.0) {
[self addReading:value forDate:date];
}
Run Code Online (Sandbox Code Playgroud)在这里我调用函数addreading …
我需要将当前日期/时间与用户选择的日期/时间进行比较.以下是我的代码段
-(IBAction)btnSaveTouched:(id)sender {
NSDate *today = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd H:mm"];
NSString *formatterDate = [formatter stringFromDate: today];
NSComparisonResult comparisionResult1 = [self.paramSchedule1StartSQLDateString compare:formatterDate];
if (comparisionResult1 == NSOrderedAscending) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Viewing schedule must be after current time." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
return;
}
NSLog(@"comparisionResult1 %d", comparisionResult1);
}
Run Code Online (Sandbox Code Playgroud)
点击btnSaveTouched(UIButton)后,日期/时间将存储到数据库中并返回到屏幕.(查看用户选择日期/时间的控制器)
但是,当我尝试比较另一个日期/时间时,即使我选择的日期/时间晚于当前日期/时间,也会显示警报.
在NSLog之后的comparsionResult1,值为1,第二次检查总是.我试着做这个NSComparsionResult comparisionResult1 = 0; 但它不能正常工作.有什么办法可以做到这一点吗?
请指教.谢谢
nsdate ×8
objective-c ×7
ios ×5
iphone ×5
cocoa-touch ×1
compare ×1
comparison ×1
datepicker ×1
ios6 ×1
ipad ×1
nscalendar ×1
swift ×1
uidatepicker ×1
xcode ×1