32

日付から 4 時間を差し引きたいと思います。次のコードを使用して、日付文字列を NSDate オブジェクトに読み込みます。

NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSDate * mydate = [dateFormatter dateFromString:[dict objectForKey:@"published"]];

次に何をすればいいですか?

4

7 に答える 7

49
NSDate *newDate = [theDate dateByAddingTimeInterval:-3600*4];

ドキュメントへのリンク


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

ドキュメントへのリンク

于 2009-07-21T18:58:58.193 に答える
23

NSCalendar は、人間の時間単位に基づいて日付を変更するための一般的な API です。このため-dateByAddingComponents:toDate:options:に、負の時間数で NSCalendar を使用できます。

于 2009-07-21T18:47:59.167 に答える
8

Swift 4 では:

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

などと一緒に行かないでください24*3600。それはトラブルを求めています。

于 2018-05-15T14:57:44.673 に答える
6

iOS 8以降、より便利なものがありますdateByAddingUnit:

スウィフト 2.x

//subtract 3 hours
let calendar = NSCalendar.autoupdatingCurrentCalendar()
newDate = calendar.dateByAddingUnit(.Hour, value: -3, toDate: originalDate, options: [])
于 2015-05-10T13:37:08.783 に答える
1

dateFromString 関数は、NSString ではなく NSDate を返します。あなたは変わるべきです、

NSDate * theDate = [dateFormatter dateFromString:datetemp];

于 2009-08-05T23:13:48.067 に答える