datetime - hora - obtener fecha actual java
Cómo obtener la hora actual como fecha y hora (17)
Acaba de empezar con el patio de recreo. Estoy tratando de crear una aplicación simple.
He creado un objeto de fecha como este:
var date = NSDate()
¿Cómo puedo obtener la hora actual? En otros idiomas puedo hacer algo como esto:
var hour = date.hour
Pero no puedo encontrar ninguna propiedad / método como ese. He encontrado un método, dateWithCalendarFormat
. ¿Debo usar eso? ¿Si es así, cómo?
Usando 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)
Fecha y hora de actualización cada segundo
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)
}
Nota: DateAndTime en el código del temporizador es el nombre de la clase.
Con Swift 3 y Swift 4, Foundation
ofrece muchas formas para el valor de hora desde un objeto Date
. De acuerdo con sus necesidades, puede elegir uno de los siguientes cuatro fragmentos de código del Patio de Recreo .
# 1. Usando el Calendar
dateComponents(_:from:)
método
Calendar
tiene un método llamado dateComponents(_:from:)
. dateComponents(_:from:)
tiene la siguiente declaración:
func dateComponents(_ components: Set<Calendar.Component>, from date: Date) -> DateComponents
Devuelve todos los componentes de fecha de una fecha, usando la zona horaria del calendario.
Uso:
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. Usando Calendar
component(_:from:)
método
Calendar
tiene un método llamado component(_:from:)
. component(_:from:)
tiene la siguiente declaración:
Devuelve el valor para un componente de una fecha.
func component(_ component: Calendar.Component, from date: Date) -> Int
Uso:
import Foundation
let date = Date()
let hour = Calendar.current.component(.hour, from: date)
print(hour) // may print: 13
# 3. Usando la propiedad DateFormatter
dateFormat
DateFormatter
tiene una propiedad llamada dateFormat
. dateFormat
tiene la siguiente declaración:
var dateFormat: String! { get set }
La cadena de formato de fecha utilizada por el receptor.
Uso:
import Foundation
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH"
let hour = dateFormatter.string(from: date)
print(hour) // may print: 13
# 4. Usando el Dateformatter
setLocalizedDateFormatFromTemplate(_:)
Dateformatter
tiene un método llamado setLocalizedDateFormatFromTemplate(_:)
. setLocalizedDateFormatFromTemplate(_:)
tiene la siguiente declaración:
func setLocalizedDateFormatFromTemplate(_ dateFormatTemplate: String)
Establece el formato de fecha de una plantilla usando la configuración regional especificada para el receptor.
Uso:
import Foundation
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.setLocalizedDateFormatFromTemplate("HH")
let hour = dateFormatter.string(from: date)
print(hour) // may print: 13
En Swift 3,
let date = Date()
let calendar = Calendar.current()
let hour = calendar.component(.hour, from: date)
Puede crear una extensión en Date
, de esa manera puede llamarla fácilmente en otros archivos. Aquí hay un ejemplo de una extensión de fecha que usa una propiedad computada.
Se imprimirá: "Hoy, 4:55 PM"
extension Date {
var formatter: DateFormatter? {
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .short
formatter.doesRelativeDateFormatting = true
return formatter
}
}
Puedes probar esto
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)
}
Ahora llama a ese método y recibe la fecha con hora, min y segundo
let currentTime = self.getTime()
print("Hour: /(currentTime.hour) Min: /(currentTime.min) Sec: /(currentTime.sec))")
Respuesta de Swift 2:
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([.Hour, .Minute], fromDate: date)
let hour = components.hour
let minutes = components.minute
Sé que hay muchas respuestas pero creo que la mía puede ser más conveniente para muchos
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)
}
}
Sólo para fecha en formato específico.
let dateFormatter1 = NSDateFormatter()
dateFormatter1.dateStyle = .MediumStyle
dateFormatter1.timeStyle = .NoStyle
dateFormatter1.dateFormat = "dd-MM-yyyy"
let date = dateFormatter1.stringFromDate(NSDate())
Swift hace que sea realmente fácil crear y usar extensiones. Creo un archivo sharedCode.swift
y coloco enumeraciones, extensiones y otras cosas divertidas en él. NSDate
una extensión NSDate
para agregar alguna funcionalidad típica que es laboriosa y fea para escribir una y otra vez:
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
}
}
Usando esta extensión ahora puedes hacer algo como:
//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()))")
Que para las 11:51 AM escribiría:
(Hora actual = 11) (Minuto actual = 51) (Cadena de tiempo corto actual = 11:51 AM)
También puede utilizar el método de conveniencia de NSDateFormatter, por ejemplo,
func printTimestamp() {
let timestamp = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .MediumStyle, timeStyle: .ShortStyle)
print(timestamp)
}
printTimestamp() // Prints "Sep 9, 2014, 4:30 AM"
Usted puede obtener de Dateformatter
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy"
let dateString = dateFormatter.string(from:Date())
print(dateString)
si sólo tiene la hora del día
let calendar = NSCalendar.currentCalendar()
var hour = calendar.component(.Hour,fromDate: NSDate())
Probado con Swift 4
Obtención de la fecha y hora actual
Puede obtener la fecha y hora actual de la siguiente manera:
let currentDateTime = Date()
Sin embargo, Date
es un número de punto flotante de 64 bits que mide el número de segundos desde la fecha de referencia del 1 de enero de 2001 a las 00:00:00 UTC . Puedo ver ese número para la fecha y hora actual usando
Date().timeIntervalSinceReferenceDate
En el momento de escribir este artículo, devolvió 497626515.185066
, probablemente no exactamente lo que está buscando. Sigue leyendo.
Creando otra fecha y hora
Método 1
Si conoce la cantidad de segundos antes o después de la fecha de referencia, puede usar eso.
let someOtherDateTime = Date(timeIntervalSinceReferenceDate: -123456789.0) // Feb 2, 1997, 10:26 AM
Método 2
Por supuesto, sería más fácil usar cosas como años, meses, días y horas (en lugar de segundos relativos) para hacer una Date
. Para esto, puede usar DateComponents
para especificar los componentes y luego Calendar
para crear la fecha. El Calendar
da el contexto de la Date
. De lo contrario, ¿cómo sabría en qué zona horaria o calendario expresarlo?
// 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)
Otras abreviaturas de zona horaria se pueden encontrar here . Si deja ese espacio en blanco, entonces el valor predeterminado es usar la zona horaria del usuario.
Método 3
La forma más sucinta (pero no necesariamente la mejor) podría ser usar DateFormatter
.
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31")
Los estándares técnicos de Unicode muestran otros formatos que admite DateFormatter
.
Visualización de la fecha y hora
Método 1
Si solo desea mostrar ciertos componentes de la fecha o la hora, puede usar CalendarUnit
para especificar los componentes que desea extraer de 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
Ver esta respuesta también.
Método 2
El Método 1 le dio los componentes, pero sería mucho trabajo dar formato a esos números para cada estilo, idioma y región. Y no es necesario. Esto ya se ha hecho con la clase 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
Aquí hay una continuación del código anterior que muestra más opciones de formato:
// "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)
Sin embargo, tenga en cuenta que esto es para el inglés con la región establecida en los EE. UU. Para otros idiomas y regiones, el formato será diferente.
Estudio adicional
Actualización para Swift 3:
let date = Date()
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
Hago esto:
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let hour = components.hour
let minutes = components.minute
Vea la misma pregunta en objetivo-c ¿Cómo obtengo horas y minutos de NSDate?
Comparado con la respuesta de Nate, obtendrás números con este, no cadenas ... ¡elige tu opción!
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)"
}
PD: no estoy seguro de qué significa exactamente la pregunta al obtener la hora actual (y la hora) como fecha y hora, pero es de esperar que lo anterior sea lo suficientemente explicativo para responder la pregunta.
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
SALIDA
2018-May-01 10:41:31
Xcode 8.2.1 • 3.0.2 Swift
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