将日期和时间与nsstring分开的最佳方法是什么?

时间:2013-01-08 08:39:32

标签: objective-c ios cocoa-touch

我有NSStirng,其中包含2013-01-08 07:52:00 +0000。我想用不同的NSStrings分隔日期和时间。

感谢任何帮助。

4 个答案:

答案 0 :(得分:6)

服务器的格式是否一致?

您是否需要使用日期和时间进行排序等...或者进行时间添加或者只是显示它们?

如果您只是显示它们并且字符串的格式不会改变,那么您可以这样做......

//assumption 1: the format is <date>space<time>space<timezone>
//assumption 2: the only purpose is to display the values sent from the server.

NSString *dateString = @"2013-01-08 07:52:00 +0000";
NSArray *components = [dateString componentsSeparatedByString:@" "];
NSString *date = components[0];
NSString *time = components[1];

答案 1 :(得分:2)

首先要做的是将日期字符串转换为NSDate

NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss Z"];
NSDate * date = [formatter dateFromString: @"2013-01-08 07:52:00 +0000"];

然后您可以使用formatter来反转该过程并返回日期和时间。您可以根据需要调整每种格式。

[formatter setTimeStyle:NSDateFormatterShortStyle];  // Get the time only
[formatter setDateStyle:NSDateFormatterNone];
NSString * timeString = [formatter stringFromDate: date];

[formatter setTimeStyle:NSDateFormatterNone];
[formatter setDateStyle:NSDateFormatterShortStyle];  // Get the date only
NSString * dateString = [formatter stringFromDate: date];

答案 2 :(得分:1)

尝试下面的代码,

    NSString *maindateString = @"2013-01-08 07:52:00 +0000";
    NSDateFormatter *myFormat = [[NSDateFormatter alloc] init];
    [myFormat setDateFormat:@"yyyy-mm-dd hh:mm:ss Z"];
    NSDate *mainDateDate = [myFormat dateFromString:maindateString];
    [myFormat setDateFormat:@"yyyy-mm-dd"];
    NSString *stringDate = [myFormat stringFromDate:mainDateDate];

检查NSString stringDate ,您需要的是: - )

编辑:要获取时间字符串,请添加以下代码:

    NSDateFormatter *myFormat2 = [[NSDateFormatter alloc] init];
    [myFormat2 setDateFormat:@"HH:mm:ss"];
    NSString *stringTime = [myFormat2 stringFromDate:mainDateDate];
    NSLog(@"%@",stringTime);

此致

答案 3 :(得分:0)

请从该字符串创建日期:

NSString to NSDate

然后使用这些(或将它们转换回字符串)。那是拯救。

无论如何,你应该在NSString之前有一个NSDate - 是吗?为什么不保留那个?