NSLog显示前一个日期 [英] NSLog showing the previous Date

查看:78
本文介绍了NSLog显示前一个日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从两个日期之间添加的核心数据中检索所有条目。我使用 NSPredicate 。因为我没有得到正确的结果我尝试记录日期。它显示以前的日期。在搜索一段时间后,我添加



dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 到我的代码。现在,它显示正确的日期,但结果仍然是错误的。



这是我使用的代码。

  NSDate * fromDate = [[self dateFormatter] dateFromString:self.fromDateField.text]; 
NSLog(@%@,fromDate);
NSDate * toDate = [[self dateFormatter] dateFromString:self.toDateField.text];
NSLog(@%@,toDate);
NSComparisonResult result = [fromDate compare:toDate];
switch(result){
case NSOrderedAscending:
{
// code
}

- (NSDateFormatter *)dateFormatter
{
static NSDateFormatter * dateFormatter = nil;
if(dateFormatter == nil)
{
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
}
return dateFormatter;先感谢提前

h2_lin>解决方案

如果你直接记录一个NSDate对象,它总是显示在GMT / UTC时区的tome。

  NSLog(@%@,[self.dateFormatter stringFromDate:toDate ]); 

这将占用您的时区帐户。或更好:日期格式的日历的时区 - 如果您不更改设备默认值。


I want to retrieve all the entries from core data added between two dates.I am using NSPredicate. As I am not getting the correct result I tried logging the date.It is showing the previous dates.After googling for a while I added

[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; to my code.Now,Its showing correct dates but the results are still wrong.

This is the code I used.

NSDate *fromDate = [[self dateFormatter]dateFromString:self.fromDateField.text];
NSLog(@"%@",fromDate);
NSDate *toDate = [[self dateFormatter]dateFromString:self.toDateField.text];
NSLog(@"%@",toDate);
NSComparisonResult result = [fromDate compare:toDate];
switch (result) {
    case NSOrderedAscending:
    {
        //code
    }

- (NSDateFormatter *)dateFormatter
{
static NSDateFormatter *dateFormatter = nil;
if (dateFormatter == nil) 
{
    dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
}
   return dateFormatter;
}

Thanks in advance

解决方案

If you log an NSDate object directly it will always display the tome in GMT/UTC timezone. you have to log the output of a date formatter.

NSLog(@"%@",[self.dateFormatter stringFromDate:toDate]);

This will take your timezone in account. Or better: the timezone of the dateformatter's calendar — what is the device default if you dont change that.

这篇关于NSLog显示前一个日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆