Domanda

In pratica ho bisogno di ottenere la data corrente e l'ora separatamente, formattato come:

2009-04-26 
11:06:54

Il codice riportato di seguito, da un'altra domanda sullo stesso argomento, genera

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

Questo è quasi quello che sto cercando, ma voglio distinguere il giorno e l'ora.

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);
È stato utile?

Soluzione

iPhone stringhe di formato sono a formato Unicode . Dietro il link è una tabella che spiega quello che tutte le lettere di cui sopra media in modo da poter costruire il proprio.

E naturalmente non dimenticate di rilasciare la data formattatori quando hai finito con loro. Il codice di cui sopra perdite format, now e inFormat.

Altri suggerimenti

questo è quello che ho usato:

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];

è possibile utilizzare questo metodo basta passare la data ad esso

-(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"];

impostare il formato di tornare è ....

yyyy-MM-dd data di ritorno 2015-12-17

yyyy-MMM-dd data di ritorno 2015-Dec-17

yy-MM-dd data di ritorno 15-12-17

dd-MM-yy data di ritorno 17-12-15

dd-MM-yyyy data di ritorno 17-12-2015

data e ora di ritorno yyyy-MMM-dd HH:mm:ss 2015-Dec-17 08:07:13

data e ora di ritorno yyyy-MMM-dd HH:mm 2015-Dec-17 08:07

Per ulteriori dettagli dei dati e Formato ora per Clicca adesso.

Grazie .....

nulla di nuovo, ma ancora voglia di condividere il mio metodo:

+(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;
}

per 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)
    }

}

Utilizzo

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

Giocare con modello per soddisfare le vostre esigenze.Esempi e doc qui per aiutarvi a costruire il modello di cui avete bisogno.

Nota

È possibile che si desidera memorizzare nella cache la DateFormatter se avete intenzione di usarlo in TableView per esempio.Per dare un'idea, looping oltre 1000 date mi ha preso 0,5 sec utilizzando il sopra toString(template: String) funzione, rispetto a 0.05 sec utilizzando 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];

Ecco fatto, avete capito bene tutto quello che vuoi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top