it-swarm.com.de

So erhalten Sie die aktuelle Uhrzeit als Datumszeit

Ich habe gerade mit dem Spielplatz angefangen. Ich versuche, eine einfache App zu erstellen.

Ich habe ein Datumsobjekt wie dieses erstellt:

var date = NSDate()

Wie bekomme ich die aktuelle Stunde? In anderen Sprachen kann ich so etwas machen:

var hour = date.hour

Aber ich kann keine solchen Eigenschaften/Methoden finden. Ich habe eine Methode gefunden, dateWithCalendarFormat. Soll ich das benutzen? Wenn das so ist, wie?

215
JOSEFtw

Update für Swift 3:

let date = Date()
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)

Ich mache das:

let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let hour = components.hour
let minutes = components.minute

Siehe die gleiche Frage in Objective-c Wie bekomme ich Stunden und Minuten von NSDate?

Verglichen mit der Antwort von Nate erhalten Sie hier Zahlen, keine Zeichenfolgen. Wählen Sie Ihre Wahl! 

330
noliv

Mit Swift 4 getestet

Aktuelles Datum und Uhrzeit abrufen

Sie können das aktuelle Datum und die aktuelle Uhrzeit so einfach abrufen:

let currentDateTime = Date()

Date ist jedoch eine 64-Bit-Gleitkommazahl, die die Anzahl der Sekunden seit dem Bezugsdatum des 1. Januar 2001 um 00:00:00 UTC misst. Ich kann diese Nummer für die aktuelle datetime sehen, indem ich 

Date().timeIntervalSinceReferenceDate

Zum Zeitpunkt dieses Schreibens gab es 497626515.185066 zurück, wahrscheinlich nicht genau das, wonach Sie suchen. Weiter lesen.

Ein anderes Datum und eine andere Uhrzeit erstellen

Methode 1

Wenn Sie die Anzahl der Sekunden vor oder nach dem Referenzdatum kennen, können Sie diese verwenden.

let someOtherDateTime = Date(timeIntervalSinceReferenceDate: -123456789.0) // Feb 2, 1997, 10:26 AM

Methode 2

Natürlich wäre es einfacher, Dinge wie Jahre, Monate, Tage und Stunden (anstelle von relativen Sekunden) zu verwenden, um eine Date zu erstellen. Dazu können Sie DateComponents verwenden, um die Komponenten anzugeben, und dann Calendar, um das Datum zu erstellen. Die Variable Calendar gibt den Kontext Date an. Woher weiß es sonst, in welcher Zeitzone oder in welchem ​​Kalender es ausgedrückt werden soll?

// 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)

Andere Zeitzonenabkürzungen finden Sie hier . Wenn Sie dieses Feld leer lassen, wird standardmäßig die Zeitzone des Benutzers verwendet.

Methode 3

Die prägnanteste (aber nicht unbedingt die beste) Methode könnte die Verwendung von DateFormatter sein.

let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31")

Die technische Standards für Unicode zeigen andere Formate an , die DateFormatter unterstützt.

Datum und Uhrzeit anzeigen

Methode 1

Wenn Sie nur bestimmte Komponenten des Datums oder der Uhrzeit anzeigen möchten, können Sie mit CalendarUnit die Komponenten angeben, die Sie aus Date extrahieren möchten.

// 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

Siehe auch diese Antwort .

Methode 2

Methode 1 gab Ihnen die Komponenten, aber es wäre viel Arbeit, diese Zahlen für jeden Stil, jede Sprache und jede Region zu formatieren. Und das musst du nicht. Mit der DateFormatter-Klasse wurde dies bereits für Sie erledigt.

// 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

Hier ist eine Fortsetzung des obigen Codes, der weitere Formatierungsoptionen zeigt: 

// "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)

Beachten Sie jedoch, dass dies für Englisch gilt und die Region auf die USA eingestellt ist. Für andere Sprachen und Regionen sieht die Formatierung anders aus.

Weitere Studie

150
Suragch

Sie können auch die bequeme Methode von NSDateFormatter verwenden, z.

func printTimestamp() {
  let timestamp = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .MediumStyle, timeStyle: .ShortStyle)
  print(timestamp)
}
printTimestamp() // Prints "Sep 9, 2014, 4:30 AM"
53
Scott Gardner

Mit Swift können Sie Erweiterungen sehr einfach erstellen und verwenden. Ich erstelle eine sharedCode.Swift-Datei und füge Enumerationen, Erweiterungen und andere lustige Sachen hinzu. Ich habe eine NSDate-Erweiterung erstellt, um einige typische Funktionen hinzuzufügen, die mühsam und hässlich sind und immer wieder eingegeben werden müssen:

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
    }
}

mit dieser Erweiterung können Sie jetzt Folgendes tun:

        //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()))")

Was für 11:51 Uhr schreiben würde:

(Aktuelle Stunde = 11) (Aktuelle Minute = 51) (Aktuelle Kurzzeitfolge = 11:51 Uhr)

49
user2266987

Schnelle 2 antwort: 

 let date = NSDate()
 let calendar = NSCalendar.currentCalendar()
 let components = calendar.components([.Hour, .Minute], fromDate: date)
 let hour = components.hour
 let minutes = components.minute
26

Swift 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

AUSGABE

01.08.1801, 01:41:31

15
Keshav Gera

Swift 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)"
  }

PS - Sie sind nicht sicher, was die Frage genau bedeutet, indem Sie die aktuelle Uhrzeit (und Stunde) als Datum und Uhrzeit angeben, aber hoffentlich sollte das oben Genannte erklären, um die Frage zu beantworten.

11

Mit Swift 3 und Swift 4 bietet Foundation viele Möglichkeiten für den Stundenwert eines Date-Objekts. Je nach Ihren Bedürfnissen können Sie einen der vier folgenden Playground-Code-Snippets auswählen.


# 1. Verwenden der CalendardateComponents(_:from:)-Methode

Calendar hat eine Methode namens dateComponents(_:from:) . dateComponents(_:from:) hat die folgende Deklaration:

func dateComponents(_ components: Set<Calendar.Component>, from date: Date) -> DateComponents

Gibt alle Datumskomponenten eines Datums unter Verwendung der Kalenderzeitzone zurück.

Verwendungszweck:

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)

# 2. Verwenden der Calendarcomponent(_:from:)-Methode

Calendar hat eine Methode namens component(_:from:) . component(_:from:) hat die folgende Deklaration: 

Gibt den Wert für eine Komponente eines Datums zurück.

func component(_ component: Calendar.Component, from date: Date) -> Int

Verwendungszweck:

import Foundation

let date = Date()
let hour = Calendar.current.component(.hour, from: date)
print(hour) // may print: 13

#3. DateFormatterdateFormat-Eigenschaft verwenden

DateFormatter hat eine Eigenschaft namens dateFormat . dateFormat hat die folgende Deklaration:

var dateFormat: String! { get set }

Die vom Empfänger verwendete Datumsformatzeichenfolge.

Verwendungszweck:

import Foundation

let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH"
let hour = dateFormatter.string(from: date)
print(hour) // may print: 13

# 4. Verwenden der DateformattersetLocalizedDateFormatFromTemplate(_:)-Methode

Dateformatter hat eine Methode namens setLocalizedDateFormatFromTemplate(_:) . setLocalizedDateFormatFromTemplate(_:) hat die folgende Deklaration:

func setLocalizedDateFormatFromTemplate(_ dateFormatTemplate: String)

Legt das Datumsformat aus einer Vorlage mit dem angegebenen Gebietsschema für den Empfänger fest.

Verwendungszweck:

import Foundation

let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.setLocalizedDateFormatFromTemplate("HH")
let hour = dateFormatter.string(from: date)
print(hour) // may print: 13
7
Imanou Petit

wenn Sie nur die Stunde des Tages benötigen

let calendar = NSCalendar.currentCalendar()
var hour = calendar.component(.Hour,fromDate: NSDate())
7
Bono Lv

In Swift 3

    let date = Date()
    let calendar = Calendar.current()

    let hour = calendar.component(.hour, from: date)
6
SaRaVaNaN DM

Verwenden von Date Formatter -Swift 3.0

//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)

Aktualisieren Sie Datum und Uhrzeit alle Sekunden

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)

    }

Hinweis: DateAndTime im Timer-Code ist der Klassenname.

6
Kay Cee

Ich weiß, dass es viele Antworten gibt, aber ich denke, dass meine für viele bequemer sind

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)
    }
}
5
user9045632

Sie können es versuchen

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)
    }

Rufen Sie nun diese Methode auf und erhalten Sie das Datum mit Stunden, Minuten und Sekunden

    let currentTime = self.getTime()
    print("Hour: \(currentTime.hour) Min: \(currentTime.min) Sec: \(currentTime.sec))")
3
nabu

Xcode 8.2.1 • Swift 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
2
Leo Dabus

nur für Datum in einem bestimmten Format

    let dateFormatter1 = NSDateFormatter()
    dateFormatter1.dateStyle = .MediumStyle
    dateFormatter1.timeStyle = .NoStyle
    dateFormatter1.dateFormat = "dd-MM-yyyy"
    let date = dateFormatter1.stringFromDate(NSDate())
2
zain ullah

Erweitere noiivs episch prägnante Lösung , hier ist die noch prägnantere Swift 3/4 Implementierung:

Swift 3/4

let components = Calendar.current.dateComponents([.hour, .minute], from: Date())
let (hour, minute) = (components.hour, components.minute)

Wenn wir auf die Erweiterung von Leo Dabus erweitern, können wir auch haben:

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 }

}

Und benutze es so:

let date = Date()
let (hour, minute) = (date.hour, date.minute)
1
NoodleOfDeath

Sie können eine Erweiterung für Date erstellen, damit Sie sie leicht in anderen Dateien aufrufen können. Hier ist ein Beispiel für eine Datumserweiterung, die eine berechnete Eigenschaft verwendet. 

Es wird ausgedruckt: "Heute, 16:55 Uhr"

extension Date {

    var formatter: DateFormatter? {
        let formatter = DateFormatter()
        formatter.dateStyle = .short
        formatter.timeStyle = .short
        formatter.doesRelativeDateFormatting = true

        return formatter
    }
}
1
pcnick13

Wenn Sie die Antwort auf eine bestimmte Art und Weise formatieren müssen, können Sie diese Methode ganz einfach verwenden: Standard = "TT-MM-JJJJ".

extension Date {

   func today(format : String = "dd-MM-yyyy") -> String{
      let date = Date()
      let formatter = DateFormatter()
      formatter.dateFormat = format
      return formatter.string(from: date)
   }
}

Das Abrufen des heutigen Datums kann jetzt mit erfolgen

Date().today() or Date().today("dd/MM/yyyy") 
0
king_T
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!
}
0
Abuzar Manzoor

Swift 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
        }
}
0

Funktioniert mit Swift 5 (Xcode 10 & Xcode 11) (von France 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
}

Wenn Sie nur das Datum anzeigen möchten, setzen Sie formatter.dateFormat

formatter.dateFormat = "EEEE dd MMMM YYYY"

Um nur Stunden anzuzeigen, ändern Sie formatter.dateFormat zu

formatter.dateFormat = "HH:mm"

Vergessen Sie nicht, getCurrentDateTime() für viewDidLoad hinzuzufügen.

0
Benjamin Tourin

Sie können von Dateformatter bekommen

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy"
let dateString = dateFormatter.string(from:Date())
print(dateString)
0
Beyaz

Hier ist die Erweiterung Swift , um Ihre aktuelle Standortzeit (GMT) zu ermitteln.

    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)!
}

Holen Sie sich jetzt Zeit: -

Date().getGMTTimeDate()
0