标签: nsdatecomponents

NSDate获得年/月/日

NSDate没有其他信息的情况下,如何获得对象的年/月/日?我意识到我可以用类似的东西做到这一点:

NSCalendar *cal = [[NSCalendar alloc] init];
NSDateComponents *components = [cal components:0 fromDate:date];
int year = [components year];
int month = [components month];
int day = [components day];
Run Code Online (Sandbox Code Playgroud)

但这对于像NSDate年/月/日这样简单的事情来说似乎有很多麻烦.还有其他解决方案吗?

objective-c nsdate nscalendar nsdatecomponents

289
推荐指数
8
解决办法
21万
查看次数

NSDate从一天开始到一天结束

    -(NSDate *)beginningOfDay:(NSDate *)date
{
    NSCalendar *cal = [NSCalendar currentCalendar];
    NSDateComponents *components = [cal components:( NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:date];

    [components setHour:0];
    [components setMinute:0];
    [components setSecond:0];

    return [cal dateFromComponents:components];

}

-(NSDate *)endOfDay:(NSDate *)date
{
    NSCalendar *cal = [NSCalendar currentCalendar];
    NSDateComponents *components = [cal components:(  NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:date];

    [components setHour:23];
    [components setMinute:59];
    [components setSecond:59];

    return [cal dateFromComponents:components];

}
Run Code Online (Sandbox Code Playgroud)

当我打电话:[self endOfDay:[NSDate date]]; 我得到了本月的第一天......为什么?我使用这两种方法,因为我需要一个从第一个日期的第一秒开始的间隔(beginningOfDay:date1)到第二个日期的最后一秒(endOfDay:Date2)......

nsdate nsdatecomponents ios

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

额外的75秒来自哪里?

在朱利安日计算器上编写一些单元测试时,我发现1847年12月2日之前的日期被NSDate错误地初始化.他们似乎有75秒加入.我找不到任何指向那个日期的东西(这是在格里高利历年截止之后).这是一个错误还是我没有遇到历史性的日历调整?

int main(int argc, const char * argv[])
{
    @autoreleasepool {

        NSCalendar *cal = [NSCalendar currentCalendar];
        NSDateComponents *dateComps = [NSDateComponents new];
        dateComps.year = 1847;
        dateComps.month = 12;
        dateComps.day    = 1;
        NSDate *d1 = [cal dateFromComponents:dateComps];
        NSLog(@"d1 = %@", d1);

        dateComps = [NSDateComponents new];
        dateComps.year = 1847;
        dateComps.month = 12;
        dateComps.day    = 2;
        NSDate *d2 = [cal dateFromComponents:dateComps];
        NSLog(@"d2 = %@", d2);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

d1 = 1847-12-01 00:01:15 +0000

d2 = 1847-12-02 00:00:00 +0000

objective-c nsdate nsdatecomponents

45
推荐指数
2
解决办法
5557
查看次数

使用Swift中的NSDateComponents计算出生日期的年龄

我正在尝试使用此函数计算Swift中birthdayDate的年龄:

var calendar : NSCalendar = NSCalendar.currentCalendar()

var dateComponentNow : NSDateComponents = calendar.components(
             NSCalendarUnit.CalendarUnitYear, 
             fromDate: birthday, 
             toDate: age, 
             options: 0)
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误 Extra argument toDate in call

在目标c中这是代码,但我不知道为什么会出现此错误:

NSDate* birthday = ...;

NSDate* now = [NSDate date];
NSDateComponents* ageComponents = [[NSCalendar currentCalendar] 
                               components:NSYearCalendarUnit 
                               fromDate:birthday
                               toDate:now
                               options:0];
NSInteger age = [ageComponents year]; 
Run Code Online (Sandbox Code Playgroud)

有没有比这更好的形式?

nsdatecomponents swift

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

Swift 3.0:将服务器UTC时间转换为本地时间,反之亦然

我想将服务器UTC时间转换为本地时间,反之亦然.这是我的代码..

var isTimeFromServer = true
var time:String!
var period:String!
let timeString = "6:59 AM" //Current UTC time

if isTimeFromServer {

    let index = timeString.index(timeString.startIndex, offsetBy: 5)
    let twelve = timeString.substring(to: index)

    var dateString:String!

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "H:mm"
    let date12 = dateFormatter.date(from: twelve)!

    dateFormatter.dateFormat = "h:mm a"
    let date22 = dateFormatter.string(from: date12)

    //print(date22)
    dateString = date22
    //print("dateString=\(dateString)")

    time = dateString.components(separatedBy: " ")[0]
    period = dateString.components(separatedBy: " ")[1]

}
else {
    time = timeString.components(separatedBy: " ")[0]
    period = timeString.components(separatedBy: …
Run Code Online (Sandbox Code Playgroud)

nsdate nsdateformatter nsdatecomponents swift

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

如何设置现有的NSDate时间?

如何设置现有NSDate的时间?

那就是我有一个约会(比如说当前日期/时间),但是想把它设置为特定的时间(例如11.23am).在目标C中最快的方法是什么?

我在看NSCalendar,看的方法,如dateByAddingComponents:toDate:options:,和dateFromComponents:,但这些似乎并没有很切中要害了什么,我需要在这里.例如:

  1. dateFromComponents: - 我必须解决所有这些工作的组件,这似乎有点矫枉过正
  2. dateByAddingComponents:toDate:options: - 我不想在我的情况下添加,而是"设置"时间.

objective-c nsdate nscalendar nsdatecomponents

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

NSDate的NSDateComponents

如何获得单个NSDate的NSDateComponents?我不想要两个日期之间的差异组件,只是NSDate的秒,分,小时,日,月和年?

cocoa objective-c nsdate nsdatecomponents

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

两个Date对象之间的所有日期(Swift)

我正在创建一个日期NSDateComponents().

let startDate = NSDateComponents()
startDate.year = 2015
startDate.month = 9
startDate.day = 1
let calendar = NSCalendar.currentCalendar()
let startDateNSDate = calendar.dateFromComponents(startDate)!
Run Code Online (Sandbox Code Playgroud)

...现在我要打印自startDate今天以来的所有日期,NSDate().我已经尝试过玩NSCalendarUnit,但它只输出整个差异,而不是单个日期.

let unit: NSCalendarUnit = [.Year, .Month, .Day, .Hour, .Minute, .Second]
let diff = NSCalendar.currentCalendar().components(unit, fromDate: startDateNSDate, toDate: NSDate(), options: [])
Run Code Online (Sandbox Code Playgroud)

如何在两个Date对象之间打印所有日期?

编辑2019

与此同时,课程的命名已经改变 - NSDate现在只是Date.NSDateComponents现在被称为DateComponents.NSCalendar.currentCalendar()现在只是Calendar.current.

nsdate nsdateformatter nscalendar nsdatecomponents swift

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

NSDate减去一个月

我想要两个NSInteger一年,一个月回去一个月.例如现在是2011-01我怎么能得到2010-12.添加是一回事,但我想减去.

NSDate *date = [NSDate date];
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
NSInteger year = [dateComponents year];
NSInteger month = [dateComponents month];
[calendar release];
NSString * pdf_name = [NSString stringWithFormat:@"file_%d_%02d.pdf", year, month];
Run Code Online (Sandbox Code Playgroud)

迎接endo

编辑:我的解决方案

    NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
 NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;

 NSDate *date = [NSDate date];
 NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
 NSInteger year = [dateComponents year];
 NSInteger month = [dateComponents month];

 BOOL substractOneMonth …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c nsdate nsdatecomponents

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

NSDateComponent中的小时为12或24小时格式?

NSDateComponent的小时组件是12h还是24h格式?我在文档中找不到任何相关内容......

objective-c nsdate nsdatecomponents ios

19
推荐指数
1
解决办法
4063
查看次数