신속하게 현재 시간에 분을 추가하는 방법
저는 Swift를 처음 사용하고 스케줄러를 시도하고 있습니다. 시작 시간을 선택했고 시작 시간에 5 분 (또는 그 배수)을 추가하고 UILabel에 표시해야합니까?
@IBAction func timePickerClicked(sender: UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle
var dateStr = dateFormatter.stringFromDate(startTime.date)
let sttime = dateStr
startTimeDisplay.text = dateStr
}
// How to advance time by 5 minutes for each section based on the start time selected and display time
// section 1 = start time + 5
// section 2 = start time + 10*
두 가지 접근 방식 :
달력 사용 :
Swift 3 이상 :
let calendar = Calendar.current let date = calendar.date(byAdding: .minute, value: 5, to: startDate)
또는 Swift 2에서 :
let calendar = NSCalendar.currentCalendar() let date = calendar.dateByAddingUnit(.Minute, value: 5, toDate: startDate, options: [])
dateByAddingTimeInterval
특정 시간 (초)을 추가 하려면 사용 하십시오.예를 들면
Swift 3 이상 :
let date = startDate.addingTimeInterval(5.0 * 60.0)
스위프트 2 :
let date = startDate.dateByAddingTimeInterval(5.0 * 60.0)
결론 addingTimeInterval
은 가장 쉽지만 일, 월 등을 추가하는 경우 일광 절약을 위해 조정되는 반면 dateByAddingTimeInterval
그렇지 않은 캘린더 계산을 사용하는 것이 좋습니다.
캘린더의 방법을 사용할 수 있습니다.
func date(byAdding component: Calendar.Component, value: Int, to date: Date, wrappingComponents: Bool = default) -> Date?
어떤 추가 Calendar.Component
어느를 Date
. 날짜 확장을 만들어의 날짜에 x 분을 추가 할 수 있습니다 UIDatePicker
.
Xcode 8 및 Xcode 9 • Swift 3.0 및 Swift 4.0
extension Date {
func adding(minutes: Int) -> Date {
return Calendar.current.date(byAdding: .minute, value: minutes, to: self)!
}
}
그런 다음 확장 메서드를 사용하여 발신자 (UIDatePicker)에게 분을 추가 할 수 있습니다.
let section1 = sender.date.adding(minutes: 5)
let section2 = sender.date.adding(minutes: 10)
놀이터 테스트 :
Date().adding(minutes: 10) // "Jun 14, 2016, 5:31 PM"
스위프트 4 :
// 현재까지 5 분 추가
let date = startDate.addingTimeInterval(TimeInterval(5.0 * 60.0))
// 날짜에서 5 분 빼기
let date = startDate.addingTimeInterval(TimeInterval(-5.0 * 60.0))
Swift 5.1 :
// subtract 5 minutes from date
transportationFromDate.addTimeInterval(TimeInterval(-5.0 * 60.0))
이 작은 확장을 저장하십시오.
extension Int {
var seconds: Int {
return self
}
var minutes: Int {
return self.seconds * 60
}
var hours: Int {
return self.minutes * 60
}
var days: Int {
return self.hours * 24
}
var weeks: Int {
return self.days * 7
}
var months: Int {
return self.weeks * 4
}
var years: Int {
return self.months * 12
}
}
그런 다음 다음과 같이 직관적으로 사용하십시오.
let threeDaysLater = TimeInterval(3.days)
date.addingTimeInterval(threeDaysLater)
를 사용하여 날짜 산술을 수행 할 수 있습니다 NSDateComponents
. 예를 들면 :
import Foundation
let comps = NSDateComponents()
comps.minute = 5
let cal = NSCalendar.currentCalendar()
let r = cal.dateByAddingComponents(comps, toDate: NSDate(), options: nil)
놀이터에서 시도해 보면 보이는 것입니다.
NSDate.init
와 함께 timeIntervalSinceNow
:
예 :
let dateAfterMin = NSDate.init(timeIntervalSinceNow: (minutes * 60.0))
스위프트 3 :
let minutes: TimeInterval = 1 * 60
let nowPlusOne = Date() + minutes
유닉스 타임 스탬프를 원하는 경우
let now : Date = Date()
let currentCalendar : NSCalendar = Calendar.current as NSCalendar
let nowPlusAddTime : Date = currentCalendar.date(byAdding: .second, value: accessTime, to: now, options: .matchNextTime)!
let unixTime = nowPlusAddTime.timeIntervalSince1970
참고 URL : https://stackoverflow.com/questions/29465205/how-to-add-minutes-to-current-time-in-swift
'developer tip' 카테고리의 다른 글
여러 필드로 목록 (C #)을 주문 하시겠습니까? (0) | 2020.09.04 |
---|---|
jQuery로 전화 번호를 포맷하는 방법 (0) | 2020.09.04 |
JavaScript로 배열을 쉽게 자르는 방법은 무엇입니까? (0) | 2020.09.04 |
URL에서 마지막 슬래시 뒤의 모든 것을 얻는 방법은 무엇입니까? (0) | 2020.09.04 |
grails localhost 포트를 변경하는 방법은 무엇입니까? (0) | 2020.09.04 |