标签: nsdate

NSDateComponents返回nil

我正在尝试将一个NSDate对象的小时,分​​钟和秒初始化为0.我正在使用下面的代码来获取它,但由于某种原因,我从[NSDateComponents date]得到nil.我的代码出了什么问题?

NSCalendar *gregorian = [[[NSCalendar alloc]
                          initWithCalendarIdentifier:NSGregorianCalendar] autorelease];

NSDate *now = [[[NSDate alloc] init] autorelease];
NSDateComponents *nowDc = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit) 
        fromDate:now];
// this returns nil!
NSDate *todayStart = [nowDc date];
Run Code Online (Sandbox Code Playgroud)

objective-c nsdate ios

17
推荐指数
1
解决办法
4923
查看次数

17
推荐指数
1
解决办法
2744
查看次数

获得第一个月,最后一个月?

我想获得第一个月,最后一个月,我试试

NSDateComponents *components = [calendar components:units fromDate:[NSDate date]];
[components setDay:1];
self.currentDate = [calendar dateFromComponents:components];
int m = components.month;
int y = components.year;
int d = components.day;

log: 2012,5,1
Run Code Online (Sandbox Code Playgroud)

我怎么能得到最后一个月?

请给我一些建议,谢谢!

xcode nsdate ios

17
推荐指数
3
解决办法
2万
查看次数

如何用人类语言显示日期,例如"今天在xx:xx pm","昨天在xx:xx am"?

我有一个日期"2014-07-02 20:57:38 +0000",我想把它格式化为"今天晚上8:57".我希望如果一个字符串是昨天,然后将其显示为"昨天上午9:00".如果它既不是今天也不是昨天,只是显示实际日期,如"27/6 at 7:53 pm".

我能够通过下面的代码获得"8:57 AM"等格式的时间.

            var formatter : NSDateFormatter = NSDateFormatter()
            formatter.dateFormat = "h:mm a"

            // message.createdAt is the date
            let dateString = formatter.stringFromDate(message.createdAt)
            println(dateString)

            //output = 8:57 AM
Run Code Online (Sandbox Code Playgroud)

但是,当我使用以下代码时,它返回一个空字符串.

            var formatter : NSDateFormatter = NSDateFormatter()
            formatter.dateFormat = "h:mm a"
            formatter.doesRelativeDateFormatting = true  //<-- This doesn't work

            let dateString = formatter.stringFromDate(message.createdAt)
            println(dateString)

            //output = (nothing, its a blank string)
Run Code Online (Sandbox Code Playgroud)

如何使这项工作在Swift中显示"今天"或"昨天"?

nsdate nsdateformatter ios swift

17
推荐指数
3
解决办法
8774
查看次数

修改NSDate代表从今天起1个月

我正在向我正在处理的Cocoa应用添加重复事件.我每天都在重复,因为我可以用数学方法定义这些(3600*24*7 = 1周).我使用以下代码来修改日期:

[NSDate dateWithTimeIntervalSinceNow:(3600*24*7*(weeks))]
Run Code Online (Sandbox Code Playgroud)

我知道自事件重复以来已过去了多少个月,但我无法弄清楚如何制作代表未来1个月/ 3个月/ 6个月/ 9个月的NSDate对象.理想情况下,我希望用户说从10月14日开始每月重复一次,它将重复每个月的第14天.

cocoa objective-c nsdate

16
推荐指数
2
解决办法
2万
查看次数

使用NSDateFormatter解析RFC 822日期

我正在使用NSDateFormatter来解析iPhone上的RFC 822日期.但是,无法在日期格式中指定可选元素.RFC 822规范中有几个可选部分,它们打破了日期解析器.如果没有任何效果,我可能必须编写一个自定义解析器来遵守规范.

例如,规范中的日期名称是可选的.所以这两个日期都是有效的:

Tue, 01 Dec 2009 08:48:25 +0000 解析格式EEE, dd MMM yyyy HH:mm:ss z 01 Dec 2009 08:48:25 +0000是用格式解析的dd MMM yyyy HH:mm:ss z

这就是我目前使用的:

+ (NSDateFormatter *)rfc822Formatter {
    static NSDateFormatter *formatter = nil;
    if (formatter == nil) {
        formatter = [[NSDateFormatter alloc] init];
        NSLocale *enUS = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
        [formatter setLocale:enUS];
        [enUS release];
        [formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss z"];
    }
    return formatter;
}

+ (NSDate *)dateFromRFC822:(NSString *)date {
    NSDateFormatter *formatter = [NSDate rfc822Formatter];
    return …
Run Code Online (Sandbox Code Playgroud)

iphone parsing date nsdate nsdateformatter

16
推荐指数
2
解决办法
8254
查看次数

如何在HTTP上将Last-Modified标头从HTTP响应正确转换为NSDate

我正在寻找一个完全可行的解决方案,一个适用于:

  • 任何iOS区域设置或时区
  • 任何/大多数HTTP服务器
  • Xcode 4.0.2 (看原因)

目前破碎的代码:

 NSString lastModifiedString = @"Mon, 06 Jun 2011 12:47:05 GMT";
 NSDateFormatter *df = [[NSDateFormatter alloc] init];  
 //df.dateFormat = @"EEE',' dd MMM yyyy HH':'mm':'ss 'GMT'";
 df.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss z";
 df.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];  
 df.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];  
 NSDate date = [df dateFromString:lastModifiedString];  
Run Code Online (Sandbox Code Playgroud)

我假设Last-Modified应该使用与HTTP规范中的其他日期字段相同的格式,这意味着使用RFC-1123/RFC-822

资源:

nsdate nsdateformatter ios

16
推荐指数
1
解决办法
2869
查看次数

NSTimeInterval到NSDate

我怎样才能转换NSTimeIntervalNSDate?把它想象成一个秒表.我希望初始日期是00:00:00,我有一个NSTimeIntervalX秒.

我需要像这样做,因为NSTimeInterval需要通过使用lround舍入转换为int ,然后转换NSDate为使用NSDateFormatter将其转换为字符串.

objective-c nsdate nsdateformatter nstimeinterval

16
推荐指数
4
解决办法
4万
查看次数

NSDateFormatter dateFromString始终返回nil

我想提前道歉,问一个重复的问题,但其他解决方案都没有对我有用.每次我尝试将日期字符串传递给dateFromString函数时,我都会得到nil.我还没有读过自iOS 7更新以来发生过变化的任何地方,但如果这对于是否仍然以相同的方式起作用有所不同,我现在正在进行更新.

这是我用来从字符串创建日期的代码:

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
    [dateFormat setLocale:[NSLocale systemLocale]];
    [dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
    [dateFormat setFormatterBehavior:NSDateFormatterBehaviorDefault];

    NSDate *date = [[NSDate alloc] init];
    date = [dateFormat dateFromString:dateString];

    return date;
Run Code Online (Sandbox Code Playgroud)

我已根据我为解决此问题而阅读的所有解决方案设置了dateFormat,但这些设置都没有解决问题.systemLocale肯定是为英语设置的,所以不应该导致任何问题.

这是我传递给dateFromString的dateString:

Wednesday, October 9, 2013 at 2:40:29 PM Pacific Daylight Time
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

nsdate nsdateformatter ios

16
推荐指数
3
解决办法
2万
查看次数

DateFormatter的方法date(from:String)在Swift中以特定语言的特定日期返回nil

我真的不知道这段代码发生了什么,我正在尝试将字符串转换为日期.我不明白的是,转换适用于大多数日期,但不适用于仅2个日期.

let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: "es")
dateFormatter.dateFormat = "dd 'de' MMMM"

dateFormatter.dateFromString("1 de octubre")
dateFormatter.dateFromString("2 de octubre")
dateFormatter.dateFromString("3 de octubre")
dateFormatter.dateFromString("4 de octubre")
dateFormatter.dateFromString("5 de octubre")
dateFormatter.dateFromString("6 de octubre")
dateFormatter.dateFromString("7 de octubre")
dateFormatter.dateFromString("8 de octubre")
dateFormatter.dateFromString("9 de octubre")
dateFormatter.dateFromString("10 de octubre")
dateFormatter.dateFromString("11 de octubre")
dateFormatter.dateFromString("12 de octubre")
dateFormatter.dateFromString("13 de octubre")
dateFormatter.dateFromString("14 de octubre")
dateFormatter.dateFromString("15 de octubre")
dateFormatter.dateFromString("16 de octubre")
dateFormatter.dateFromString("17 de octubre")
dateFormatter.dateFromString("18 de octubre")
dateFormatter.dateFromString("19 de octubre")
dateFormatter.dateFromString("20 de octubre")
dateFormatter.dateFromString("21 de octubre")
dateFormatter.dateFromString("22 de octubre") …
Run Code Online (Sandbox Code Playgroud)

macos nsdate nsdateformatter ios swift

16
推荐指数
1
解决办法
794
查看次数