wake-up-neo.com

Aktuelles NSDate im Zeitstempelformat abrufen

Ich habe eine grundlegende Methode, die die aktuelle Zeit abruft und sie in eine Zeichenfolge setzt. Wie kann ich jedoch das aktuelle Datum und die Uhrzeit in einem UNIX-Format (seit 1970) formatieren?

Hier ist mein Code:

NSDate *currentTime = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh-mm"];
NSString *resultString = [dateFormatter stringFromDate: currentTime];

Ist es möglich, NSDateFormatter zu verwenden, um den 'resultString' in einen Zeitstempel umzuwandeln?

83
Supertecnoboff

Ich verwende Folgendes:

NSString * timestamp = [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000];

(mal 1000 für Millisekunden, sonst nimm das raus)

Wenn Sie es ständig verwenden, kann es nett sein, ein Makro zu deklarieren

#define TimeStamp [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000]

Dann nenne es so:

NSString * timestamp = TimeStamp;

Oder als Methode:

- (NSString *) timeStamp {
    return [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000];
}

Als TimeInterval

- (NSTimeInterval) timeStamp {
    return [[NSDate date] timeIntervalSince1970] * 1000;
}

HINWEIS:

Die 1000 soll den Zeitstempel in Millisekunden umrechnen. Sie können dies entfernen, wenn Sie Ihr timeInterval in Sekunden bevorzugen.

Schnell

Wenn Sie eine globale Variable in Swift wünschen, können Sie Folgendes verwenden:

var Timestamp: String {
    return "\(NSDate().timeIntervalSince1970 * 1000)"
}

Dann können Sie es anrufen

println("Timestamp: \(Timestamp)")

Der *1000 ist wiederum für Millisekunden. Wenn Sie möchten, können Sie das entfernen. Wenn Sie es als NSTimeInterval behalten wollen

var Timestamp: NSTimeInterval {
    return NSDate().timeIntervalSince1970 * 1000
}

Deklarieren Sie diese außerhalb des Kontextes einer Klasse und sie sind von überall aus zugänglich.

213
Logan

verwenden Sie [[NSDate date] timeIntervalSince1970]

15
sage444
- (void)GetCurrentTimeStamp
    {
        NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
        [objDateformat setDateFormat:@"yyyy-MM-dd"];
        NSString    *strTime = [objDateformat stringFromDate:[NSDate date]];
        NSString    *strUTCTime = [self GetUTCDateTimeFromLocalTime:strTime];//You can pass your date but be carefull about your date format of NSDateFormatter.
        NSDate *objUTCDate  = [objDateformat dateFromString:strUTCTime];
        long long milliseconds = (long long)([objUTCDate timeIntervalSince1970] * 1000.0);

        NSString *strTimeStamp = [NSString stringWithFormat:@"%lld",milliseconds];
NSLog(@"The Timestamp is = %@",strTimeStamp);
    }

 - (NSString *) GetUTCDateTimeFromLocalTime:(NSString *)IN_strLocalTime
    {
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd"];
        NSDate  *objDate    = [dateFormatter dateFromString:IN_strLocalTime];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
        NSString *strDateTime   = [dateFormatter stringFromDate:objDate];
        return strDateTime;
    }

HINWEIS: - Der Zeitstempel muss sich in der UTC-Zone befinden. Daher konvertiere ich unsere Ortszeit in UTC-Zeit.

7
Vicky

Wenn Sie diese Methode direkt für ein NSDate-Objekt aufrufen möchten und den Zeitstempel in Millisekunden ohne Dezimalstellen als Zeichenfolge erhalten möchten, definieren Sie diese Methode als Kategorie:

@implementation NSDate (MyExtensions)
- (NSString *)unixTimestampInMilliseconds
{
     return [NSString stringWithFormat:@"%.0f", [self timeIntervalSince1970] * 1000];
}
5
Pellet

// Die folgende Methode gibt den Zeitstempel nach der Konvertierung in Millisekunden zurück. [RETURNS STRING]

- (NSString *) timeInMiliSeconds
{
    NSDate *date = [NSDate date];
    NSString * timeInMS = [NSString stringWithFormat:@"%lld", [@(floor([date timeIntervalSince1970] * 1000)) longLongValue]];
    return timeInMS;
}
1
Fatima Arshad

Kann auch verwenden 

@(time(nil)).stringValue);

für Zeitstempel in Sekunden.

1
rubik

Es ist praktisch, ein Makro zu definieren, um den aktuellen Zeitstempel abzurufen

class Constant {
    struct Time {
        let now = { round(NSDate().timeIntervalSince1970) } // seconds
    }
} 

Dann können Sie let timestamp = Constant.Time.now() verwenden.

1
Alston

Zeitstempel von NSDate Swift 3 erhalten  

func getCurrentTimeStampWOMiliseconds(dateToConvert: NSDate) -> String {
    let objDateformat: DateFormatter = DateFormatter()
    objDateformat.dateFormat = "yyyy-MM-dd HH:mm:ss"
    let strTime: String = objDateformat.string(from: dateToConvert as Date)
    let objUTCDate: NSDate = objDateformat.date(from: strTime)! as NSDate
    let milliseconds: Int64 = Int64(objUTCDate.timeIntervalSince1970)
    let strTimeStamp: String = "\(milliseconds)"
    return strTimeStamp
}

Benutzen

let now = NSDate()
let nowTimeStamp = self.getCurrentTimeStampWOMiliseconds(dateToConvert: now)
0
Hardik Thakkar

Schnell: 

Ich habe ein UILabel, das TimeStamp über eine Kameravorschau zeigt.

    var timeStampTimer : NSTimer?
    var dateEnabled:  Bool?
    var timeEnabled: Bool?
   @IBOutlet weak var timeStampLabel: UILabel!

override func viewDidLoad() {
        super.viewDidLoad()
//Setting Initial Values to be false.
        dateEnabled =  false
        timeEnabled =  false
}

override func viewWillAppear(animated: Bool) {

        //Current Date and Time on Preview View
        timeStampLabel.text = timeStamp
        self.timeStampTimer = NSTimer.scheduledTimerWithTimeInterval(1.0,target: self, selector: Selector("updateCurrentDateAndTimeOnTimeStamperLabel"),userInfo: nil,repeats: true)
}

func updateCurrentDateAndTimeOnTimeStamperLabel()
    {
//Every Second, it updates time.

        switch (dateEnabled, timeEnabled) {
        case (true?, true?):
            timeStampLabel.text =  NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .LongStyle, timeStyle: .MediumStyle)
            break;
        case (true?, false?):
            timeStampLabel.text = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .LongStyle, timeStyle: .NoStyle)
            break;

        case (false?, true?):
            timeStampLabel.text = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .NoStyle, timeStyle: .MediumStyle)
            break;
        case (false?, false?):
            timeStampLabel.text =  NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .NoStyle, timeStyle: .NoStyle)
            break;
        default:
            break;

        }
    }

Ich stelle eine Einstellungsschaltfläche ein, um eine alertView auszulösen.

@IBAction func settingsButton(sender : AnyObject) {


let cameraSettingsAlert = UIAlertController(title: NSLocalizedString("Please choose a course", comment: ""), message: NSLocalizedString("", comment: ""), preferredStyle: .ActionSheet)

let timeStampOnAction = UIAlertAction(title: NSLocalizedString("Time Stamp on Photo", comment: ""), style: .Default) { action in

    self.dateEnabled = true
    self.timeEnabled =  true

}
let timeStampOffAction = UIAlertAction(title: NSLocalizedString("TimeStamp Off", comment: ""), style: .Default) { action in

    self.dateEnabled = false
    self.timeEnabled =  false

}
let dateOnlyAction = UIAlertAction(title: NSLocalizedString("Date Only", comment: ""), style: .Default) { action in

    self.dateEnabled = true
    self.timeEnabled =  false


}
let timeOnlyAction = UIAlertAction(title: NSLocalizedString("Time Only", comment: ""), style: .Default) { action in

    self.dateEnabled = false
    self.timeEnabled =  true
}

let cancel = UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .Cancel) { action in

}
cameraSettingsAlert.addAction(cancel)
cameraSettingsAlert.addAction(timeStampOnAction)
cameraSettingsAlert.addAction(timeStampOffAction)
cameraSettingsAlert.addAction(dateOnlyAction)
cameraSettingsAlert.addAction(timeOnlyAction)

self.presentViewController(cameraSettingsAlert, animated: true, completion: nil)

}

0
A.G

Wenn Sie einen Zeitstempel als Zeichenfolge benötigen. 

time_t result = time(NULL);                
NSString *timeStampString = [@(result) stringValue];
0
nanjunda
    NSDate *todaysDate = [NSDate new];
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"MM-dd-yyyy HH:mm:ss"];
NSString *strDateTime = [formatter stringFromDate:todaysDate];

NSString *strFileName = [NSString stringWithFormat:@"/Users/Shared/Recording_%@.mov",strDateTime];
NSLog(@"filename:%@",strFileName);

Das Protokoll lautet: Dateiname:/Benutzer/Freigegeben/Aufnahme_06-28-2016 12: 53: 26.Mov

0
jiten