132

我基本上需要分别获取当前日期和时间,格式为:

2009-04-26
11:06:54

下面的代码来自同一主题的另一个问题,生成

现在:|2009-06-01 23:18:23 +0100|
日期字符串:|2009 年 6 月 1 日 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);
4

8 回答 8

194

这就是我用的:

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];
于 2009-06-04T03:01:12.117 回答
72

iPhone 格式字符串是Unicode 格式。链接后面是一个表格,解释了上面所有字母的含义,因此您可以自己构建。

当然,不要忘记在使用完日期格式化程序后发布它们。上面的代码泄漏format,nowinFormat.

于 2009-06-01T22:34:41.190 回答
12
    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日期和时间

有关更多详细信息,请单击立即获取数据和时间格式。

谢谢.....

于 2015-12-18T12:38:44.483 回答
11

您可以使用此方法,只需将您的日期传递给它

-(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;
}
于 2013-07-05T12:29:42.197 回答
4

没什么新鲜的,但仍然想分享我的方法:

+(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;
}
于 2015-07-03T08:41:01.863 回答
3

为了迅速

var dateString:String = "2014-05-20";
var dateFmt = NSDateFormatter()
// the format you want
dateFmt.dateFormat = "yyyy-MM-dd"
var date1:NSDate = dateFmt.dateFromString(dateString)!;
于 2015-01-13T10:02:58.653 回答
0

斯威夫特 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)myFormatter.string(from: Date)

于 2017-05-09T15:50:50.390 回答
-5
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];

就是这样,你得到了你想要的一切。

于 2010-11-26T18:48:25.560 回答