How does one subtract hours from an NSDate?

后端 未结 7 1438
长发绾君心
长发绾君心 2020-12-09 14:56

I would like to subtract 4 hours from a date. I read the date string into an NSDate object use the following code:

NSDateFormatter * dateFormatter = [[[NSDat         


        
相关标签:
7条回答
  • 2020-12-09 15:38
    NSDate *newDate = [theDate dateByAddingTimeInterval:-3600*4];
    

    Link to documentation.


    NSDate *newDate = [[[NSDate alloc] initWithTimeInterval:-3600*4
                                                  sinceDate:theDate]] autorelease];
    

    Link to documentation.

    0 讨论(0)
  • 2020-12-09 15:40

    dateFromString function returns NSDate, not NSString. you should change,

    NSDate * theDate = [dateFormatter dateFromString:datetemp];

    0 讨论(0)
  • 2020-12-09 15:43
    //in Swift 3
    //subtract 3 hours
    let calendar = NSCalendar.autoupdatingCurrent
    newDate = calendar.date(byAdding:.hour, value: -3, to: originalDate)
    
    0 讨论(0)
  • 2020-12-09 15:47

    Since iOS 8 there is the more convenient dateByAddingUnit:

    Swift 2.x

    //subtract 3 hours
    let calendar = NSCalendar.autoupdatingCurrentCalendar()
    newDate = calendar.dateByAddingUnit(.Hour, value: -3, toDate: originalDate, options: [])
    
    0 讨论(0)
  • 2020-12-09 15:52

    In Swift 4 :

    var baseDate = ... // something
    let dateMinus4Hours = Calendar.current.date(byAdding: .hour, value: -4, to: baseDate)
    

    don't go with 24*3600 and stuff, that's asking for trouble.

    0 讨论(0)
  • 2020-12-09 15:53

    Here a function which might be useful as it returns the date -4 h considering that this may also change the date and the month and eventually the year. the .searchBackward option is the important part :)

    public static func correctSecondComponent(date: Date, calendar: Calendar = Calendar(identifier: Calendar.Identifier.gregorian))->Date {
    
        let hour = calendar.component(.hour, from: date)
    
        let e = (calendar as NSCalendar).date(byAdding: NSCalendar.Unit.hour, value: -4, to: date, options:.searchBackwards)!
    
        return e
    }
    
    0 讨论(0)
提交回复
热议问题