Ψάχνω να πάρει την τρέχουσα ώρα και λεπτό από το iPhone του χρήστη για την εμφάνιση σε μια εφαρμογή που δεν εμφανίζει τη γραμμή κατάστασης. Υπάρχει ένας απλός τρόπος για να το κάνουμε αυτό;
Ανάκτηση τρέχουσα τοπική ώρα στο iPhone;
// get current date/time
NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSString *currentTime = [dateFormatter stringFromDate:today];
[dateFormatter release];
NSLog(@"User's current time in their preference format:%@",currentTime);
-(void)currentTime
{
//Get current time
NSDate* now = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *dateComponents = [gregorian components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:now];
NSInteger hour = [dateComponents hour];
NSString *am_OR_pm=@"AM";
if (hour>12)
{
hour=hour%12;
am_OR_pm = @"PM";
}
NSInteger minute = [dateComponents minute];
NSInteger second = [dateComponents second];
[gregorian release];
NSLog(@"Current Time %@",[NSString stringWithFormat:@"%02ld:%02ld:%02ld %@", (long)hour, (long)minute, (long)second,am_OR_pm]);
}
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSString *currentTime = [dateFormatter stringFromDate:[NSDate date]]
[dateFormatter release]; dateFormatter = nil;
Νομίζω ότι θα πρέπει να δοκιμάσετε αυτό. Η ζώνη ώρας του είναι σημαντικό.
Δείτε αυτό το παρόμοιο ζήτημα για μια απάντηση. Θα πρέπει να το αλλάξετε σε μορφή ημερομηνίας σας.
[[NSDate date] timeIntervalSince1970]; αν ψάχνετε για να υπολογίσει χρονικά διαστήματα, είστε σε καλύτερη θέση χρησιμοποιώντας CACurrentMediaTime
double currentTime = CACurrentMediaTime();
CFAbsoluteTimeGetCurrent ()
Απόλυτος χρόνος μετριέται σε δευτερόλεπτα σε σχέση με το απόλυτο ημερομηνία αναφοράς της πρώτης Ιανουαρίου του 2001 00:00:00 GMT. Μια θετική τιμή αντιπροσωπεύει μια ημερομηνία μετά την ημερομηνία αναφοράς, μια αρνητική τιμή αντιπροσωπεύει μια ημερομηνία πριν από αυτό. Για παράδειγμα, τον απόλυτο χρόνο -32940326 ισοδυναμεί με 16 Δεκεμβρίου 1999 στις 17:54:34. Επανειλημμένες εκκλήσεις προς τη λειτουργία αυτή δεν εγγυώνται μονοτονικά αυξανόμενη αποτελέσματα. Η ώρα του συστήματος μπορεί να μειωθεί λόγω συγχρονισμό με εξωτερικές αναφορές του χρόνου ή λόγω ρητή αλλαγή χρήσης του ρολογιού.
Μία βραχύτερη προσέγγιση
NSDate * now = [NSDate date];
timeLabel.text = [NSDateFormatter localizedStringFromDate:now
dateStyle:NSDateFormatterNoStyle
timeStyle:NSDateFormatterShortStyle];













