답변:
스위프트 3 업데이트 :
let date = Date()
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
나는 이것을한다:
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let hour = components.hour
let minutes = components.minute
objective-c에서 동일한 질문을 참조하십시오. NSDate에서 시간과 분을 어떻게 얻습니까?
Nate의 답변과 비교하여 문자열이 아닌이 숫자로 숫자를 얻을 수 있습니다 ... 선택을 선택하십시오!
let components = calendar.components(.NSCalendarUnit.Year.union(NSCalendarUnit.Minute), fromDate: date)
. 더 이상 수직 슬래시를 사용할 수 없습니다.
let components = calendar.components(NSCalendarUnit.Year.union(NSCalendarUnit.Minute), fromDate: date)
여분의 '.'를 제거했습니다. NSCalendarUnit 전
let components = calendar.components([ .Hour, .Minute, .Second], fromDate: date)
스위프트 4 테스트
다음과 같이 간단하게 현재 날짜와 시간을 얻을 수 있습니다.
let currentDateTime = Date()
그러나 Date
2001 년 1 월 1 일 기준 날짜 00:00:00 UTC 이후의 시간 (초)을 측정하는 64 비트 부동 소수점 숫자 입니다. 사용하여 현재 날짜 시간의 해당 숫자를 볼 수 있습니다
Date().timeIntervalSinceReferenceDate
이 글을 쓰는 시점에서 497626515.185066
, 아마 당신이 찾고있는 것이 아닐 수도 있습니다. 계속 읽으세요.
방법 1
참조 날짜 전후의 시간 (초)을 알고 있으면 사용할 수 있습니다.
let someOtherDateTime = Date(timeIntervalSinceReferenceDate: -123456789.0) // Feb 2, 1997, 10:26 AM
방법 2
물론 년, 월, 일 및 시간 (상대 초가 아닌)을 사용하여을 만드는 것이 더 쉬울 것 Date
입니다. 이를 위해 DateComponents
구성 요소를 지정한 다음 Calendar
날짜를 만드는 데 사용할 수 있습니다 . 는 Calendar
제공 Date
컨텍스트를. 그렇지 않으면, 어떤 시간대 나 캘린더를 표시 할 것인지 어떻게 알 수 있습니까?
// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 1980
dateComponents.month = 7
dateComponents.day = 11
dateComponents.timeZone = TimeZone(abbreviation: "JST") // Japan Standard Time
dateComponents.hour = 8
dateComponents.minute = 34
// Create date from components
let userCalendar = Calendar.current // user calendar
let someDateTime = userCalendar.date(from: dateComponents)
다른 시간대 약어는 여기 에서 찾을 수 있습니다 . 비워두면 기본값은 사용자의 시간대를 사용하는 것입니다.
방법 3
가장 간결한 방법 (그러나 반드시 최고는 아님)을 사용할 수 있습니다 DateFormatter
.
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31")
유니 코드 기술 표준은 다른 형식으로 보여줄 것을DateFormatter
지원합니다.
방법 1
날짜 또는 시간의 특정 구성 요소 만 표시하려는 경우 CalendarUnit
추출 할 구성 요소를 지정하는 데 사용할 수 있습니다 Date
.
// get the current date and time
let currentDateTime = Date()
// get the user's calendar
let userCalendar = Calendar.current
// choose which date and time components are needed
let requestedComponents: Set<Calendar.Component> = [
.year,
.month,
.day,
.hour,
.minute,
.second
]
// get the components
let dateTimeComponents = userCalendar.dateComponents(requestedComponents, from: currentDateTime)
// now the components are available
dateTimeComponents.year // 2016
dateTimeComponents.month // 10
dateTimeComponents.day // 8
dateTimeComponents.hour // 22
dateTimeComponents.minute // 42
dateTimeComponents.second // 17
이 답변 도 참조하십시오 .
방법 2
방법 1은 구성 요소를 제공했지만 모든 스타일, 언어 및 지역에 맞게 숫자를 형식화하는 것은 많은 작업이 될 것입니다. 그리고 당신은 필요하지 않습니다. 이것은 이미 DateFormatter
수업 과 함께 당신을 위해 이루어졌습니다 .
// get the current date and time
let currentDateTime = Date()
// initialize the date formatter and set the style
let formatter = DateFormatter()
formatter.timeStyle = .medium
formatter.dateStyle = .long
// get the date time String from the date object
formatter.string(from: currentDateTime) // October 8, 2016 at 10:48:53 PM
더 많은 형식화 옵션을 보여주는 위 코드의 연속은 다음과 같습니다.
// "10/8/16, 10:52 PM"
formatter.timeStyle = .short
formatter.dateStyle = .short
formatter.string(from: currentDateTime)
// "Oct 8, 2016, 10:52:30 PM"
formatter.timeStyle = .medium
formatter.dateStyle = .medium
formatter.string(from: currentDateTime)
// "October 8, 2016 at 10:52:30 PM GMT+8"
formatter.timeStyle = .long
formatter.dateStyle = .long
formatter.string(from: currentDateTime)
// "October 8, 2016"
formatter.timeStyle = .none
formatter.dateStyle = .long
formatter.string(from: currentDateTime)
// "10:52:30 PM"
formatter.timeStyle = .medium
formatter.dateStyle = .none
formatter.string(from: currentDateTime)
그러나이 지역은 미국으로 설정된 영어 용입니다. 다른 언어 및 지역의 경우 서식이 다르게 보입니다.
NSDateFormatter의 편리한 방법을 사용할 수도 있습니다.
func printTimestamp() {
let timestamp = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .MediumStyle, timeStyle: .ShortStyle)
print(timestamp)
}
printTimestamp() // Prints "Sep 9, 2014, 4:30 AM"
Swift를 사용하면 확장 기능을 쉽게 만들고 사용할 수 있습니다. sharedCode.swift
파일을 만들고 열거 형, 확장명 및 기타 재미있는 것들을 넣습니다. 나는 NSDate
몇 가지 전형적인 기능을 추가하기 위해 확장 기능을 만들었습니다 .
extension NSDate
{
func hour() -> Int
{
//Get Hour
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.Hour, fromDate: self)
let hour = components.hour
//Return Hour
return hour
}
func minute() -> Int
{
//Get Minute
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.Minute, fromDate: self)
let minute = components.minute
//Return Minute
return minute
}
func toShortTimeString() -> String
{
//Get Short Time String
let formatter = NSDateFormatter()
formatter.timeStyle = .ShortStyle
let timeString = formatter.stringFromDate(self)
//Return Short Time String
return timeString
}
}
이 확장을 사용하면 다음과 같은 작업을 수행 할 수 있습니다.
//Get Current Date
let currentDate = NSDate()
//Test Extensions in Log
NSLog("(Current Hour = \(currentDate.hour())) (Current Minute = \(currentDate.minute())) (Current Short Time String = \(currentDate.toShortTimeString()))")
오전 11:51에 대해 다음과 같이 작성합니다.
(현재 시간 = 11) (현재 분 = 51) (현재 짧은 시간 문자열 = 오전 11:51)
스위프트 4
let dateFormatter : DateFormatter = DateFormatter()
// dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.dateFormat = "yyyy-MMM-dd HH:mm:ss"
let date = Date()
let dateString = dateFormatter.string(from: date)
let interval = date.timeIntervalSince1970
산출
2018 년 5 월 1 일 10:41:31
스위프트 3 :
static func currentTime() -> String {
let date = Date()
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
return "\(hour):\(minutes)"
}
추신-날짜 시간으로 현재 시간 (및 시간)을 가져 와서 질문의 의미를 정확히 알지 못하지만 위의 질문에 대답하기에 충분해야합니다.
Swift 5를 사용하면 객체 Foundation
에서 시간 값을 얻는 여러 가지 방법을 제공 Date
합니다. 필요에 따라 다음 네 가지 놀이터 코드 스 니펫 중 하나를 선택할 수 있습니다 .
Calendar
dateComponents(_:from:)
방법을 사용하여Calendar
라는 메소드가 dateComponents(_:from:)
있습니다. dateComponents(_:from:)
다음과 같은 선언이 있습니다.
func dateComponents(_ components: Set<Calendar.Component>, from date: Date) -> DateComponents
달력 시간대를 사용하여 날짜의 모든 날짜 구성 요소를 반환합니다.
용법:
import Foundation
let date = Date()
let dateComponents = Calendar.current.dateComponents([.hour], from: date)
let hour = dateComponents.hour
print(String(describing: hour)) // may print: Optional(13)
Calendar
component(_:from:)
방법을 사용하여Calendar
라는 메소드가 component(_:from:)
있습니다. component(_:from:)
다음과 같은 선언이 있습니다.
날짜의 한 구성 요소에 대한 값을 리턴합니다.
func component(_ component: Calendar.Component, from date: Date) -> Int
용법:
import Foundation
let date = Date()
let hour = Calendar.current.component(.hour, from: date)
print(hour) // may print: 13
DateFormatter
dateFormat
재산 사용DateFormatter
라는 속성이 dateFormat
있습니다. dateFormat
다음과 같은 선언이 있습니다.
var dateFormat: String! { get set }
수신자가 사용하는 날짜 형식 문자열입니다.
용법:
import Foundation
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH"
let hour = dateFormatter.string(from: date)
print(hour) // may print: 13
Dateformatter
setLocalizedDateFormatFromTemplate(_:)
방법을 사용하여Dateformatter
라는 메소드가 setLocalizedDateFormatFromTemplate(_:)
있습니다. setLocalizedDateFormatFromTemplate(_:)
다음과 같은 선언이 있습니다.
func setLocalizedDateFormatFromTemplate(_ dateFormatTemplate: String)
수신자에 지정된 로케일을 사용하여 템플리트에서 날짜 형식을 설정합니다.
용법:
import Foundation
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.setLocalizedDateFormatFromTemplate("HH")
let hour = dateFormatter.string(from: date)
print(hour) // may print: 13
스위프트 3에서
let date = Date()
let calendar = Calendar.current()
let hour = calendar.component(.hour, from: date)
let calendar = Calendar.current; let unitFlags: Set<Calendar.Component> = Set<Calendar.Component ([.hour]); let components = calendar.dateComponents(unitFlags, from: self)
//Date
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
let dateString = "Current date is: \(dateFormatter.string(from: Date() as Date))"
labelfordate.text = String(dateString)
//Time
let timeFormatter = DateFormatter()
timeFormatter.timeStyle = .medium
let timeString = "Current time is: \(timeFormatter.string(from: Date() as Date))"
labelfortime.text = String(timeString)
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(DateAndTime.action), userInfo: nil, repeats: true)
}
func action()
{
//Date
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
let dateString = "Current date is: \(dateFormatter.string(from: Date() as Date))"
labelfordate.text = String(dateString)
//Time
let timeFormatter = DateFormatter()
timeFormatter.timeStyle = .medium
let timeString = "Current time is: \(timeFormatter.string(from: Date() as Date))"
labelfortime.text = String(timeString)
}
참고 : 타이머 코드의 DateAndTime 은 클래스 이름입니다.
나는 많은 답변이 있다는 것을 알고 있지만 많은 사람들에게 더 편리하다고 생각합니다.
extension String {
init(epoch: Double) {
let date = Date(timeIntervalSince1970: epoch)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy HH:mm:ssZZZ"
self = dateFormatter.string(from: date)
}
}
당신은 이것을 시도 할 수 있습니다
func getTime() -> (hour:Int, min:Int, sec:Int) {
let currentDateTime = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([.Hour,.Minute,.Second], fromDate: currentDateTime)
let hour = components.hour
let min = components.minute
let sec = components.second
return (hour,min,sec)
}
이제 해당 메소드를 호출하고 시간, 분 및 초로 날짜를 수신하십시오.
let currentTime = self.getTime()
print("Hour: \(currentTime.hour) Min: \(currentTime.min) Sec: \(currentTime.sec))")
Xcode 8.2.1 • 스위프트 3.0.2
extension Date {
var hour: Int { return Calendar.autoupdatingCurrent.component(.hour, from: self) }
}
let date = Date() // "Mar 16, 2017, 3:43 PM"
let hour = date.hour // 15
Date().hour
noiiv의 간결한 간결한 솔루션을 확장 한 Swift 3/4 구현은 다음과 같습니다.
스위프트 3/4
let components = Calendar.current.dateComponents([.hour, .minute], from: Date())
let (hour, minute) = (components.hour, components.minute)
또한 Leo Dabus의 확장 을 통해 다음과 같은 이점 을 얻을 수 있습니다.
extension Date {
func components(_ components: Set<Calendar.Component>) -> DateComponents {
return Calendar.current.dateComponents(components, from: self)
}
func component(_ component: Calendar.Component) -> Int {
return Calendar.current.component(component, from: self)
}
var era: Int { return component(.era) }
var year: Int { return component(.year) }
var month: Int { return component(.month) }
var day: Int { return component(.day) }
var hour: Int { return component(.hour) }
var minute: Int { return component(.minute) }
var second: Int { return component(.second) }
var weekday: Int { return component(.weekday) }
var weekdayOrdinal: Int { return component(.weekdayOrdinal) }
var quarter: Int { return component(.quarter) }
var weekOfMonth: Int { return component(.weekOfMonth) }
var weekOfYear: Int { return component(.weekOfYear) }
var yearForWeekOfYear: Int { return component(.yearForWeekOfYear) }
var nanosecond: Int { return component(.nanosecond) }
var calendar: Calendar? { return components([.calendar]).calendar }
var timeZone: TimeZone? { return components([.timeZone]).timeZone }
}
그리고 그렇게 사용하십시오 :
let date = Date()
let (hour, minute) = (date.hour, date.minute)
Date
객체 에서 년, 월, 일 등과 같은 것을 얻을 때 옵션을 반환 할 필요가 없습니다 . Btw 일정 구성 요소 방법이 단일 구성 요소에 더 적합
DateComponents.year
됩니다Int?
component
는 해당 접근자를위한 방법
특정 형식의 날짜 만
let dateFormatter1 = NSDateFormatter()
dateFormatter1.dateStyle = .MediumStyle
dateFormatter1.timeStyle = .NoStyle
dateFormatter1.dateFormat = "dd-MM-yyyy"
let date = dateFormatter1.stringFromDate(NSDate())
에 확장자를 만들어 Date
다른 파일에서 쉽게 호출 할 수 있습니다. 다음은 계산 된 속성을 사용하는 날짜 확장의 예입니다.
"오늘 오후 4:55"로 인쇄됩니다.
extension Date {
var formatter: DateFormatter? {
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .short
formatter.doesRelativeDateFormatting = true
return formatter
}
}
특정 방식으로 답변의 형식을 지정해야하는 경우이 방법 (기본값 = "dd-MM-yyyy")을 쉽게 사용할 수 있습니다.
extension Date {
func today(format : String = "dd-MM-yyyy") -> String{
let date = Date()
let formatter = DateFormatter()
formatter.dateFormat = format
return formatter.string(from: date)
}
}
오늘 날짜를 얻는 것은 이제
Date().today() or Date().today("dd/MM/yyyy")
스위프트 4 :
extension Date
{
func hour() -> Int
{
//Get Hour
let calendar = Calendar.current
let components = calendar.component(.hour, from: self)
let hour = components
//Return Hour
return hour
}
func minute() -> Int
{
//Get Minute
let calendar = Calendar.current
let components = calendar.component(.minute, from: self)
let minute = components
//Return Minute
return minute
}
}
func getCurrentDate() -> Date {
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let dateInString = dateFormatter.string(from: date)
let dateinDate = dateFormatter.date(from: dateInString)
return dateinDate!
}
다음은 현재 장치 위치 시간 (GMT)을 가져 오는 SWIFT 확장입니다.
func getGMTTimeDate() -> Date {
var comp: DateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute], from: self)
comp.calendar = Calendar.current
comp.timeZone = TimeZone(abbreviation: "GMT")!
return Calendar.current.date(from: comp)!
}
지금 시간을 얻으십시오 :-
Date().getGMTTimeDate()
Swift 5 (Xcode 10 및 Xcode 11)와 호환 (프랑스 UTC에서)
func getCurrentDateTime() {
let now = Date()
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "fr_FR")
formatter.dateFormat = "EEEE dd MMMM YYYY HH:mm"
myLabel.text = formatter.string(from: now)
myLabel.font = UIFont(name: "HelveticaNeue-Light", size: 12)
myLabel.textColor = UIColor.black
}
날짜 만 표시하려면 다음을 설정하십시오. formatter.dateFormat
formatter.dateFormat = "EEEE dd MMMM YYYY"
단지 시간 변경 표시하려면 formatter.dateFormat
로를
formatter.dateFormat = "HH:mm"
에 추가 getCurrentDateTime()
하는 것을 잊지 마십시오 viewDidLoad
.