Das ist meine Zeit Wert in Millisekundenkann nicht korrekte Zeit mit Zeitintervall von Epoche in iOS
UInt64 time = 1490237914000;
Ich verwende die folgende Methode, um die korrekten Zeit Darstellung
- (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;
}
Dies ist, was erhalten ich erhalte von den obigen Code:
2017-03-23 12:20:02.318 AutoLayoutTest[21746:3371016] Time is 08:06 Tuesday
Dieser Ausgang ist falsch (ich weiß, es ist falsch).
testete ich den gleichen Wert mit 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);
}
ich die richtige Ausgabe bekam diese Codezeile
Time is 10:58 Friday
Ich versuchte
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timerValue];
auf folgendes zu ändern:
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:timerValue];
und
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:timerValue];
ich immer noch falsches Ergebnis.
Ich weiß nicht, wo das Problem liegt, denn der Zeitwert ist die Zeit von Epoche, und in Java funktioniert es. Ich muss hier etwas falsch verstehen, aber ich kann es nicht feststellen.