Форматирование NSDate в определенные стили для года, месяца, дня и часа, минуты, секунды
Мне нужно получить текущую дату и время отдельно, отформатированные как:
2009-04-26 11:06:54
Код ниже, из другого вопроса на ту же тему, генерирует
сейчас: |2009-06-01 23:18:23 +0100| dateString: | 01 июня 2009 г. 23: 18 | разобрали: | 2009-06-01 23:18:00 +0100 |
Это почти то, что я ищу, но я хочу разделить день и время.
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);
8 ответов
Строки в формате iPhone представлены в формате Unicode. За ссылкой находится таблица, объясняющая, что означают все буквы выше, чтобы вы могли создать свои собственные.
И, конечно же, не забудьте выпустить ваши средства форматирования даты, когда вы закончите с ними. Выше код утечки format
, now
, а также inFormat
,
Это то, что я использовал:
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];
NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];
[dateformat setDateFormat:@"Your Date Format"];
установить формат для возврата....
yyyy-MM-dd
вернуть 2015-12-17
Дата
yyyy-MMM-dd
вернуть 2015-Dec-17
Дата
yy-MM-dd
вернуть 15-12-17
Дата
dd-MM-yy
вернуть 17-12-15
Дата
dd-MM-yyyy
вернуть 17-12-2015
Дата
yyyy-MMM-dd HH:mm:ss
вернуть 2015-Dec-17 08:07:13
Дата и время
yyyy-MMM-dd HH:mm
вернуть 2015-Dec-17 08:07
Дата и время
Для получения дополнительной информации Формат данных и времени для Click Now.
Спасибо.....
Вы можете использовать этот метод, просто передать ему свою дату
-(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;
}
Ничего нового, но все же хочу поделиться своим методом:
+(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;
}
Для быстрой
var dateString:String = "2014-05-20";
var dateFmt = NSDateFormatter()
// the format you want
dateFmt.dateFormat = "yyyy-MM-dd"
var date1:NSDate = dateFmt.dateFromString(dateString)!;
Свифт 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)
}
}
использование
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
Играть с шаблоном, чтобы соответствовать вашим потребностям. Примеры и документация помогут вам создать нужный шаблон.
Заметка
Вы можете кэшировать свой DateFormatter
если вы планируете использовать его в TableView
например. Чтобы дать представление, цикл более 1000 дат занял у меня 0,5 секунды, используя выше toString(template: String)
функция, по сравнению с 0,05 сек, используя 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];
Вот и все, вы получили все, что вы хотите.