我想从约会中减去4个小时.我将日期字符串读入NSDate对象使用以下代码:
NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSDate * mydate = [dateFormatter dateFromString:[dict objectForKey:@"published"]];
Run Code Online (Sandbox Code Playgroud)
接下来我该怎么办?
Geo*_*lly 49
NSDate *newDate = [theDate dateByAddingTimeInterval:-3600*4];
Run Code Online (Sandbox Code Playgroud)
NSDate *newDate = [[[NSDate alloc] initWithTimeInterval:-3600*4
sinceDate:theDate]] autorelease];
Run Code Online (Sandbox Code Playgroud)
Chu*_*uck 23
NSCalendar是根据人工时间单位更改日期的通用API.为此,您可以使用-dateByAddingComponents:toDate:options:
负数小时的NSCalendar .
在 Swift 4 中:
var baseDate = ... // something
let dateMinus4Hours = Calendar.current.date(byAdding: .hour, value: -4, to: baseDate)
Run Code Online (Sandbox Code Playgroud)
不要去24*3600
和东西,那是自找麻烦。
从iOS 8开始,更方便dateByAddingUnit
:
Swift 2.x
//subtract 3 hours
let calendar = NSCalendar.autoupdatingCurrentCalendar()
newDate = calendar.dateByAddingUnit(.Hour, value: -3, toDate: originalDate, options: [])
Run Code Online (Sandbox Code Playgroud)
//in Swift 3
//subtract 3 hours
let calendar = NSCalendar.autoupdatingCurrent
newDate = calendar.date(byAdding:.hour, value: -3, to: originalDate)
Run Code Online (Sandbox Code Playgroud)