Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将系统日期转换为yyyy MM dd日期格式的日期_Ios_Objective C_Nsdate - Fatal编程技术网

Ios 如何将系统日期转换为yyyy MM dd日期格式的日期

Ios 如何将系统日期转换为yyyy MM dd日期格式的日期,ios,objective-c,nsdate,Ios,Objective C,Nsdate,我想将我的系统日期转换为yyyy-MM-dd日期格式,并分配给另一个日期 我的代码是: NSDate *datenow = [NSDate date]; NSDateFormatter *df = [[NSDateFormatter alloc]init]; [df setDateFormat:@"yyyy-MM-dd"]; currDate = [df stringFromDate:datenow]; NSLog(@"currDate ====%@",currDate); [df set

我想将我的系统日期转换为yyyy-MM-dd日期格式,并分配给另一个日期 我的代码是:

NSDate *datenow = [NSDate date];

NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd"];
currDate = [df stringFromDate:datenow];

NSLog(@"currDate ====%@",currDate);

[df setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[df setDateFormat:@"yyyy-MM-dd"];

NSDate *compareDate = [df dateFromString:currDate];

NSLog(@"compareDate ====%@",compareDate);
NSLog像这样打印 当前日期===2014-05-10 比较日期===2014-05-10 00:00:00+0000

我想删除比较日期中的00:00:00+0000。怎么做。 请帮帮我,它在浪费我的时间。

你可以用

NSCalendar*currentCalendar=[NSCalendar currentCalendar]

//获取当前日期的组件。
NSDateComponents*currentDateComponents=[当前日历组件:NSCalendarCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSMinuteCalendarUnit | NSSecondary CalendarUnit | NSTimeZoneCalendarUnit fromDate:[NSDate日期]]

现在,您可以使用日期的组成部分(当然,您可以传递任何日期,而不是
[NSDate date]
),您可以使用所需的每一个组件,也可以进一步使用:

NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];
[日期格式化程序setDateFormat:@“YYYY-MM-DD”]

设置日期格式。

您说过:

我希望在比较日期中删除
00:00:00+0000
。我该怎么做呢

简而言之,如果您不想在UTC字符串
yyyy-MM-dd HH:MM:ss+0000
中看到日期,则不要
NSLog
对象本身。仅
NSLog
NSDateFormatter
提取的字符串


但是,您的示例代码表明对
NSDate
NSDateFormatter
对象的用途和功能存在误解

  • A
    NSDate
    表示一个时间点,例如格林尼治标准时间晚上8点,即巴黎东部标准时间晚上10点或纽约东部标准时间下午4点。但是
    NSDate
    不包括时区,因为格林尼治标准时间晚上8点、东部标准时间晚上10点和东部标准时间下午4点都代表相同的时间点

  • NSDateFormatter
    可用于转换该
    NSDate
    对象的字符串表示形式(例如,在格林威治标准时间晚上8点,巴黎的用户看到“晚上10点”,而纽约的用户看到“下午4点”)

但是,使用日期格式化程序将日期转换为字符串(默认情况下,该字符串将位于本地时区),然后将该字符串转换回日期(这一次表示该字符串以UTC表示日期/时间,而实际上并非如此)是没有意义的

这相当于我在美国东部时间下午4点站在纽约时代广场的一个法国人旁边,告诉他“现在是格林威治标准时间下午4点”,他只会把我当成一个疯狂的美国人,因为我太无知了,不知道现在真的是格林威治标准时间晚上8点(或者,根据他的手表,巴黎的塞斯特标准时间晚上10点)


所以,也许你可以退一步告诉我们你想做什么,因为你问题中的代码没有意义。如果使用日期格式化程序使用特定时区将日期转换为字符串,则如果要将其转换回日期,则必须使用相同的时区。(或者您必须使用一种明确的时区日期格式;这就是为什么
NSLog
使用
yyyy-MM-dd HH:MM:ss+0000
格式,这样就可以清楚地知道
NSDate
代表的时间点)。

我想删除比较日期中的00:00:00+0000。“-这没有任何意义
NSDate
只是一个绝对时间点(自2001年1月1日格林威治标准时间起存储为秒)。NSDate对小时、分钟或时区一无所知。在“compareDate====2014-05-10 00:00:00+0000”中看到的是日期对象的描述。说明始终以GTM打印。。。。我指的是GMT。-也许你可以描述你实际需要实现的目标。每当你
NSLog
NSDate
对象时,它都会以
yyyy-MM-dd HH:MM:ss+0000
格式在GMT中显示它。无论何时,只要您想以特定格式查看它(例如仅
yyyy-MM-dd
,那么您就不应该
NSLog
查看
NSDate
对象,而应该只查看使用
NSDateFormatter
检索到的字符串表示形式)。
        NSDateFormatter *formater = [[NSDateFormatter alloc] init];
        [formater setLocale:[NSLocale systemLocale]];
        [formater setDateFormat:@"yyyy-MM-dd"];
        NSString *todayString = [formater stringFromDate:[NSDate date]];
        NSLog(@"todayString ====%@", todayString);