Как можно вычесть часы из NSDate?

Только это сработало для меня:

#container:hover .cube { background-color: yellow; }

Где .cube - CssClass для #cube.

Проверено в Firefox, Chrome и Edge.

29
задан 21 July 2009 в 18:42
поделиться

7 ответов

Здесь функция, которая может быть полезна, так как возвращает дату -4 ч, учитывая, что это также может изменить дату, месяц и, в конечном итоге, год. Опция .searchBackward является важной частью:)

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
}
1
ответ дан Pe Gra 21 July 2009 в 18:42
поделиться

Начиная с iOS 8, есть более удобные dateByAddingUnit:

Swift 2.x

//subtract 3 hours
let calendar = NSCalendar.autoupdatingCurrentCalendar()
newDate = calendar.dateByAddingUnit(.Hour, value: -3, toDate: originalDate, options: [])
6
ответ дан Bryan Bryce 21 July 2009 в 18:42
поделиться

В Swift 4:

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

не соглашайтесь с 24*3600 и прочим, это напрашивается на неприятности.

2
ответ дан Guillaume Laurent 21 July 2009 в 18:42
поделиться
//in Swift 3
//subtract 3 hours
let calendar = NSCalendar.autoupdatingCurrent
newDate = calendar.date(byAdding:.hour, value: -3, to: originalDate)
5
ответ дан Ning 21 July 2009 в 18:42
поделиться
NSDate *newDate = [theDate dateByAddingTimeInterval:-3600*4];

Ссылка на документацию .


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

Ссылка на документацию .

49
ответ дан Georg Schölly 21 July 2009 в 18:42
поделиться

NSCalendar - это общий API-интерфейс для изменения дат на основе единиц человеческого времени. Для этого вы можете использовать NSCalendar -dateByAddingComponents:toDate:options: с отрицательным числом часов.

23
ответ дан Chuck 21 July 2009 в 18:42
поделиться

Функция dateFromString возвращает NSDate, а не NSString. Вы должны изменить,

NSDate * theDate = [dateFormatter dateFromString: datetemp];

1
ответ дан Alexander Abakumov 21 July 2009 в 18:42
поделиться