我正在尝试将一个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) 我想获得第一个月,最后一个月,我试试
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)
我怎么能得到最后一个月?
请给我一些建议,谢谢!
我有一个日期"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中显示"今天"或"昨天"?
我正在向我正在处理的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天.
我正在使用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) 我正在寻找一个完全可行的解决方案,一个适用于:
目前破碎的代码:
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
资源:
我怎样才能转换NSTimeInterval成NSDate?把它想象成一个秒表.我希望初始日期是00:00:00,我有一个NSTimeIntervalX秒.
我需要像这样做,因为NSTimeInterval需要通过使用lround舍入转换为int ,然后转换NSDate为使用NSDateFormatter将其转换为字符串.
我想提前道歉,问一个重复的问题,但其他解决方案都没有对我有用.每次我尝试将日期字符串传递给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)
谢谢您的帮助!
我真的不知道这段代码发生了什么,我正在尝试将字符串转换为日期.我不明白的是,转换适用于大多数日期,但不适用于仅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)