Frage

ich im Grunde müssen separat aktuelle Datum und die Zeit zu bekommen, so formatiert, wie:

2009-04-26 
11:06:54

Der Code unten, von einer anderen Frage zum gleichen Thema, erzeugt

now:        |2009-06-01 23:18:23 +0100| 
dateString: |Jun 01, 2009 23:18| 
parsed:     |2009-06-01 23:18:00 +0100|

Das ist fast, was ich suche, aber ich will den Tag und die Zeit trennen.

NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];

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

NSString *dateString = [format stringFromDate:now];

NSDateFormatter *inFormat = [[NSDateFormatter alloc] init];
[inFormat setDateFormat:@"MMM dd, yyyy"];

NSDate *parsed = [inFormat dateFromString:dateString];

NSLog(@"\n"
"now:        |%@| \n"
"dateString: |%@| \n"
"parsed:     |%@|", now, dateString, parsed);
War es hilfreich?

Lösung

iPhone Format-Strings sind in Unicode-Format . Hinter dem Link ist eine Tabelle, zu erklären, was alle Buchstaben über die mittleren, so dass Sie Ihre eigenen bauen.

Und natürlich nicht vergessen Ihr Datum Formatierer zu lösen, wenn Sie mit ihnen fertig sind. Der obige Code Lecks format, now und inFormat.

Andere Tipps

Das ist, was ich verwende:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];

NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];

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

NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];

NSLog(@"\n"
      "theDate: |%@| \n"
      "theTime: |%@| \n"
      , theDate, theTime);

[dateFormat release];
[timeFormat release];
[now release];

Sie können mit dieser Methode nur Ihr Datum, um es passieren

-(NSString *)getDateFromString:(NSString *)string
{

    NSString * dateString = [NSString stringWithFormat: @"%@",string];

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"your current date format"];
    NSDate* myDate = [dateFormatter dateFromString:dateString];

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"your desired format"];
    NSString *stringFromDate = [formatter stringFromDate:myDate];

    NSLog(@"%@", stringFromDate);
    return stringFromDate;
}
    NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];
    [dateformat setDateFormat:@"Your Date Format"];

das Format zurückzukehren ....

yyyy-MM-dd Rückkehr 2015-12-17 Datum

yyyy-MMM-dd Rückkehr 2015-Dec-17 Datum

yy-MM-dd Rückkehr 15-12-17 Datum

dd-MM-yy Rückkehr 17-12-15 Datum

dd-MM-yyyy Rückkehr 17-12-2015 Datum

yyyy-MMM-dd HH:mm:ss Rückkehr 2015-Dec-17 08:07:13 Datum und Uhrzeit

yyyy-MMM-dd HH:mm Rückkehr 2015-Dec-17 08:07 Datum und Uhrzeit

Für weitere Details der Daten und Zeitformat für Jetzt klicken.

Danke .....

nichts Neues, aber immer noch will, meine Methode teilen:

+(NSString*) getDateStringFromSrcFormat:(NSString *) srcFormat destFormat:(NSString *)
destFormat scrString:(NSString *) srcString
{
    NSString *dateString = srcString;
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    //[dateFormatter setDateFormat:@"MM-dd-yyyy"];
    [dateFormatter setDateFormat:srcFormat];
    NSDate *date = [dateFormatter dateFromString:dateString];

    // Convert date object into desired format
    //[dateFormatter setDateFormat:@"yyyy-MM-dd"];
    [dateFormatter setDateFormat:destFormat];
    NSString *newDateString = [dateFormatter stringFromDate:date];
    return newDateString;
}

Für swift

var dateString:String = "2014-05-20";
var dateFmt = NSDateFormatter()
// the format you want
dateFmt.dateFormat = "yyyy-MM-dd"
var date1:NSDate = dateFmt.dateFromString(dateString)!;

Swift 3

extension Date {

    func toString(template: String) -> String {
        let formatter = DateFormatter()
        formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: template, options: 0, locale: NSLocale.current)
        return formatter.string(from: self)
    }

}

Verwendung

let now = Date()
let nowStr0 = now.toString(template: "EEEEdMMM") // Tuesday, May 9
let nowStr1 = now.toString(template: "yyyy-MM-dd") // 2017-05-09
let nowStr2 = now.toString(template: "HH:mm:ss") // 17:47:09

mit Schablone Spielen Sie Ihre Bedürfnisse anzupassen. Beispiele und doc hier helfen bauen die Vorlage, die Sie benötigen.

Hinweis

können Sie möchten Ihre DateFormatter zwischenzuspeichern, wenn Sie es in TableView zum Beispiel verwenden möchten. Um eine Vorstellung zu geben, Looping über 1000 Tage, nahm mir 0,5 s unter Verwendung der oben toString(template: String) Funktion, im Vergleich zu 0,05 s mit myFormatter.string(from: Date).

NSDate *date         = [NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"]
NSString *dateString  = [df stringFromDate:date];
[df setDateFormat:@"hh:mm:ss"];
NSString *hoursString = [df stringFromDate:date];

Das ist es, du hat es alles, was Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top