2017-03-23 44 views
0

從時代獲得正確的時間和間隔時間這是在毫秒我的時間價值無法在iOS版

UInt64 time = 1490237914000; 

我用下面的方法來得到正確的時間表示

- (NSString *)commonRepresentationForTimerValue:(UInt64)timerValue 
{ 
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:timerValue]; 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *components = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitWeekday) fromDate:date]; 

    NSInteger hour = [components hour]; 
    NSInteger minute = [components minute]; 
    NSInteger weekDay = [components weekday]; 

    NSString *hourString; 

    if(hour < 10) 
    { 
     hourString = [NSString stringWithFormat:@"%@%li", @"0", (long)hour]; 
    } 

    else 
    { 
     hourString = [@(hour) stringValue]; 
    } 

    NSString *minuteString; 

    if(minute < 10) 
    { 
     minuteString = [NSString stringWithFormat:@"%@%li", @"0", (long)minute]; 
    } 

    else 
    { 
     minuteString = [@(minute) stringValue]; 
    } 

    NSString *weekDayString; 

    switch(weekDay) 
    { 
     case 1: weekDayString = @"Sunday"; break; 
     case 2: weekDayString = @"Monday"; break; 
     case 3: weekDayString = @"Tuesday"; break; 
     case 4: weekDayString = @"Wednesday"; break; 
     case 5: weekDayString = @"Thursday"; break; 
     case 6: weekDayString = @"Friday"; break; 
     case 7: weekDayString = @"Saturday"; break; 
    } 

    NSString *timerString = [NSString stringWithFormat:@"%@:%@ %@", hourString, minuteString, weekDayString]; 

    return timerString; 
} 

這是什麼我從上面的代碼得到:

2017-03-23 12:20:02.318 AutoLayoutTest[21746:3371016] Time is 08:06 Tuesday 

該輸出是不正確的(我知道這是不正確的)。

我與Java

public static void main(String[] args) 
    { 
     Long timer = 1490237914000l; 

     final Calendar calendar = Calendar.getInstance(); 
     DateFormat formatter = new SimpleDateFormat("hh:mm"); 
     calendar.setTimeInMillis(timer); 

     String weekDay = null; 

     switch (calendar.get(Calendar.DAY_OF_WEEK)) 
     { 
      case 0: weekDay = "Sunday"; break; 
      case 1: weekDay = "Monday"; break; 
      case 2: weekDay = "Tuesday"; break; 
      case 3: weekDay = "Wednesday"; break; 
      case 4: weekDay = "Thursday"; break; 
      case 5: weekDay = "Friday"; break; 
      case 6: weekDay = "Saturday"; break; 
     } 

     System.out.println("Time is " + formatter.format(calendar.getTime()) + " " + weekDay); 
    } 

測試相同的值,我得到了正確的輸出

Time is 10:58 Friday 

我想這行代碼

NSDate *date = [NSDate dateWithTimeIntervalSince1970:timerValue]; 

更改爲以下:

NSDate *date = [NSDate dateWithTimeIntervalSinceNow:timerValue]; 

NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:timerValue]; 

我仍然得到不正確的結果。

我不知道問題在哪裏,因爲時間值是從時代開始的時間,在java中它的工作原理。我在這裏肯定有一些誤解,但我無法確定。

回答

0

我自己解決了這個問題。我只是將計時器的值除以1000.

NSDate * date = [NSDate dateWithTimeIntervalSince1970:timerValue/1000];

並且解決了這個問題。