【问题标题】:How can I make a Date to jump every n seconds?如何让 Date 每 n 秒跳转一次?
【发布时间】:2011-11-12 05:39:49
【问题描述】:

我想让日期每“n”秒改变一天,就像一台时光机。我有这段代码,但没有任何反应,任何帮助将不胜感激。 这是代码:没有问题,没有错误......没有明天的日期!

-(IBAction)jumpDate

{

NSDateFormatter *dateFormater = [[NSDateFormatter alloc]init];
[dateFormater setDateFormat:@"dd MMMM yyyy  h:mm:ss"];  //dateFormater.dateStyle   =NSDateFormatterLongStyle; //USA date style MMMM-dd-yyyy
[dateFormater setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CDT"]];

NSDate *todayDate = [[NSDate alloc]init];

[gregDate setText : [dateFormater stringFromDate:todayDate]];

[NSString stringWithFormat:@"dd MMMM yyyy", dayCount];

dayCount++;

if (dayCount >= 365)

{
    dayCount = 365;

    [timerDate invalidate];

}
}
//and the timer

- (void)viewDidLoad
{

NSDateFormatter *dateFormater = [[[NSDateFormatter alloc]init]autorelease];
[dateFormater setDateFormat:@"dd MMMM yyyy"];

NSTimeInterval secondsPerDay = 86400 ; // = 24 * 60 * 60

NSDate *today = [[[NSDate alloc]init]autorelease];
NSDate *tomorrow;
tomorrow = [today dateByAddingTimeInterval:(NSTimeInterval)secondsPerDay];

 [gregDate setText : [NSString stringWithFormat:@" %@ ",tomorrow]];

 dayCount = 1;
 timerDate=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self    selector:@selector(jumpDate)userInfo:nil repeats:YES];


[super viewDidLoad];
}

【问题讨论】:

    标签: objective-c ios nsdate nstimeinterval


    【解决方案1】:

    我有 3 个问题,并非都与您的问题直接相关。

      1234563该按钮的操作。
    1. 在此调用中userInfo 之前的代码中是否缺少空格:
      timerDate=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(jumpDate)userInfo:nil repeats:YES];

    2. 您是否确认您的 IBOutlet 设置正确?我已经停止计算我忘记的次数了。


    [gregDate setText : [NSString stringWithFormat:@" %@ ",tomorrow]];  
    

    什么是gregDate?它是指向 UILabel 的 IBOutlet 吗?
    而且您可能已经验证了这一点,但是,调用 retunr 是一个有效的字符串?


    你不应该从你的计时器中调用你的 IBAction 方法,原因有两个,
    1. 我真的认为这是一个糟糕的设计,因为它也是从计时器调用的,所以它会混淆这个方法的作用。
    2. 方法签名与 NSTimer 需要的不匹配

    选择器: 计时器触发时发送给目标的消息。选择器必须具有以下签名: - (void)timerFireMethod:(NSTimer*)theTimer

    此文本来自NSTimer 类参考。

    【讨论】:

    • 我使用了 IBAction 按钮,因为我想在用户按下按钮时开始日期跳转。计时器的设置与另一个计时器相同,其他计时器工作正常。 IBOutlet 连接已全部设置。谢谢
    • gregDate 表示公历日期只是为了设置差异,我会有 Julian 和 Mayan,所以我习惯于识别。标签显示明天的日期,但我希望该日期使用计时器每 n 秒更改一次。
    【解决方案2】:

    替换这一行:

    NSDate *todayDate = [[NSDate alloc]init];
    

    用这一行:

    NSDate *todayDate = [[NSDate date] dateByAddingTimeInterval:dayCount * 86400];
    

    【讨论】:

    • 我会尝试一下,如果有什么不同,请告诉您。谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多