【问题标题】:compare string date to current date将字符串日期与当前日期进行比较
【发布时间】:2013-10-31 11:29:24
【问题描述】:

您好,我有一个问题,我有一个来自服务器的值(日期值),我必须使用当前日期检查该值并查看哪个更大。我正在使用以下代码,但它也显示第二个日期更大..如何解决这个问题。它总是出现在 else 块中。

NSDateFormatter *dateFormatter=[NSDateFormatter new];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

NSDate *dateOfEvent=[dateFormatter dateFromString:@"2013-04-04 03:22:55"];


if([dateOfEvent compare:[NSDate date]]==NSOrderedAscending)
{
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Message" message:@"Event has    been passed." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
    [alert show];
    return;
}
else
{

   }

【问题讨论】:

  • 使您的日期格式字符串与日期字符串的格式相匹配。
  • @HotLicks 请查看我更新的问题
  • 如果你使用 NSLog dateOfEvent 会得到什么?

标签: ios timezone nsdate nsdateformatter


【解决方案1】:

您没有正确创建日期,格式化程序必须与字符串具有相同的格式。如果您的字符串是“2013-04-04”,那么您的日期格式化程序应该是“yyyy-MM-dd:

NSDateFormatter *dateFormatter=[NSDateFormatter new];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

NSDate *dateOfEvent=[dateFormatter dateFromString:@"2013-04-04"];

【讨论】:

  • 我已经改变了问题请看。
  • 还是不一样的,天和小时之间有2个空格
  • 输入错误其实两个都有一个空格。
  • 打印dateOfEvent的值,创建后检查是否有日期
  • 当我尝试 tp print current date 它记录 2013-10-30 23:55:39 +0000 并且当前时间是下午 6:35 我能够获得 dateOfEvent 但问题是当comapring到当前日期。
【解决方案2】:

以相同的格式转换两个日期。然后对比如下:

if (serverDate.timeIntervalSince1970 > currentDate.timeIntervalSince1970) {
// Server date is greater. Do your stuff

}
else {
// Current date is greater. Do your stuff
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2022-01-16
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多