Estoy luchando con esto. Tengo un valor en segundos que quiero mostrar en una etiqueta en formato HH: MM. He buscado en Internet durante años y he encontrado algunas respuestas, pero o no las he entendido del todo, o me parecen una manera extraña de hacer lo que quiero. ¡Si alguien pudiera ayudarme en esto, sería genial! Tenga en cuenta que soy nuevo en este juego, por lo que esta pregunta puede parecer muy básica para los más experimentados.Convertir segundos enteros a HH: MM, iPhone
Respuesta
Estaba buscando lo mismo que está buscando pero no pude encontrar uno. Así que escribí uno -
- (NSString *)timeFormatted:(int)totalSeconds
{
int seconds = totalSeconds % 60;
int minutes = (totalSeconds/60) % 60;
int hours = totalSeconds/3600;
return [NSString stringWithFormat:@"%02d:%02d:%02d",hours, minutes, seconds];
}
funciona perfectamente en Swift así:
func timeFormatted(totalSeconds: Int) -> String {
let seconds: Int = totalSeconds % 60
let minutes: Int = (totalSeconds/60) % 60
let hours: Int = totalSeconds/3600
return String(format: "%02d:%02d:%02d", hours, minutes, seconds)
}
Gracias por su respuesta, se ve como lo que necesito, pero parece que no puedo usarlo sin errores. Estoy convencido de que el error está de mi parte. Si no te importa ayudarme más: Mi valor es un flotador y está en segundos. Lo tengo exhibiendo en una etiqueta cuando se presiona un botón. ¿A dónde iría su código, y cómo haría que mi etiqueta muestre el valor en el formato HH: MM? Muchas gracias, Stu – Stumf
Ordenada, gracias por su ayuda. Su respuesta y http://stackoverflow.com/questions/1259028/convert-nsnumber-double-value-into-time respuesta por Pholker fueron la razón por la que pude hacer esto! Gracias de nuevo – Stumf
Excelentes cosas: hicieron de este un método de clase y lo convirtieron en una categoría en NSString. De acuerdo con el bisturí, muy limpio. –
Así es como lo hago:
-(NSString *)formatTimeFromSeconds:(int)numberOfSeconds
{
int seconds = numberOfSeconds % 60;
int minutes = (numberOfSeconds/60) % 60;
int hours = numberOfSeconds/3600;
//we have >=1 hour => example : 3h:25m
if (hours) {
return [NSString stringWithFormat:@"%dh:%02dm", hours, minutes];
}
//we have 0 hours and >=1 minutes => example : 3m:25s
if (minutes) {
return [NSString stringWithFormat:@"%dm:%02ds", minutes, seconds];
}
//we have only seconds example : 25s
return [NSString stringWithFormat:@"%ds", seconds];
}
para SWIFT:
func formatTimeInSec(totalSeconds: Int) -> String {
let seconds = totalSeconds % 60
let minutes = (totalSeconds/60) % 60
let hours = totalSeconds/3600
let strHours = hours > 9 ? String(hours) : "0" + String(hours)
let strMinutes = minutes > 9 ? String(minutes) : "0" + String(minutes)
let strSeconds = seconds > 9 ? String(seconds) : "0" + String(seconds)
if hours > 0 {
return "\(strHours):\(strMinutes):\(strSeconds)"
}
else {
return "\(strMinutes):\(strSeconds)"
}
}
En i OS 8.0 y versiones superiores también se puede hacer con NSDateComponentsFormatter
. Debo mencionar que formateará la cadena sin el primer cero inicial, por ejemplo '9:30', pero no '09: 30 '. Pero si te gusta usar formateadores, puede utilizar este código:
-(NSString *)getTimeStringFromSeconds:(double)seconds
{
NSDateComponentsFormatter *dcFormatter = [[NSDateComponentsFormatter alloc] init];
dcFormatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorPad;
dcFormatter.allowedUnits = NSCalendarUnitHour | NSCalendarUnitMinute;
dcFormatter.unitsStyle = NSDateComponentsFormatterUnitsStylePositional;
return [dcFormatter stringFromTimeInterval:seconds];
}
Si también desea obtener segundos en el resultado, debe agregar la unidad 'NSCalendarUnitSecond' a las Unidades permitidas. Este ejemplo también funciona para aplicaciones Mac OS X. – edukulele
Esto espera un doble no un int. Al menos en Swift. –
Para Swift con el reloj contar
var timer = NSTimer()
var count = 1
func updateTime() {
count++
let seconds = count % 60
let minutes = (count/60) % 60
let hours = count/3600
let strHours = hours > 9 ? String(hours) : "0" + String(hours)
let strMinutes = minutes > 9 ? String(minutes) : "0" + String(minutes)
let strSeconds = seconds > 9 ? String(seconds) : "0" + String(seconds)
if hours > 0 {
clockOutlet.text = "\(strHours):\(strMinutes):\(strSeconds)"
}
else {
clockOutlet.text = "\(strMinutes):\(strSeconds)"
}
}
Mientras @Aks' answer para obras de Swift, soy un poco escéptico acerca hardcoding valores en mi código. @ edukulele's answer es mucho más limpio, pero está en Objective-C. Lo traduje a Swift con un ligero cambio. Normalmente escribo mis formateadores como lazy var
s.
private lazy var dateFormatter: NSDateComponentsFormatter = {
let formatter = NSDateComponentsFormatter()
formatter.zeroFormattingBehavior = .Pad
formatter.allowedUnits = [.Hour, .Minute, .Second]
formatter.unitsStyle = .Positional
return formatter
}()
Esto es 'H: MM', no' HH: MM' como se solicitó. –
- 1. ¿Convertir tiempo en formato HH: MM: SS a segundos solamente?
- 2. Convertir TimeSpan de formato "hh: mm: ss" a "hh: mm"
- 3. Forma simple de convertir HH: MM: SS (horas: minutos: segundos segundos) a segundos
- 4. Cómo convertir los segundos en este formato "HH: mm: ss"
- 5. Convierta minutos enteros en Cadena "hh: mm"
- 6. Cómo convertir HH: mm: ss.SSS a milisegundos?
- 7. La salida está en segundos. convertir a formato hh: mm: ss en php
- 8. NSTimeInterval a HH: mm: ss?
- 9. Programa para convertir el tiempo en segundos a formato hh: mm: ss
- 10. PostgreSQL - Cómo convertir segundos en un campo numérico a HH: MM: SS
- 11. ¿Hay una función de Matlab para convertir segundos transcurridos a formato HH: MM: SS?
- 12. Cómo convertir la cadena HH: MM a Joda Duration?
- 13. Cómo convertir un decimal en tiempo, ej. HH: MM: SS
- 14. R Encuentra diferencia de tiempo en segundos para AAAA-MM-DD HH: MM: SS.mmm
- 15. Cómo convertir aaaa-MM-dd hh: mm: ss a "decimoquinto Abr 2010" usando PHP
- 16. C - Convertir time_t a cadena con formato AAAA-MM-DD HH: MM: SS
- 17. ¿Cómo convierto hh: mm: ss a hh: mm en SQL Server?
- 18. Formato de fecha en dd/mm/aaaa hh: mm: ss
- 19. TimeSpan ToString "[d.] Hh: mm"
- 20. ¿Cómo convertirías los segundos a formato HH: MM: SS en SQLite?
- 21. tiempo WPF Datagrid formato hh: mm campo
- 22. Usando un NSTimer para HH: MM: SS?
- 23. ¿Cómo puedo convertir DateTime.now en C# para aaaa-mm-dd hh: mm: ss.sssssss?
- 24. Formateo de segundos en hh: ii: ss
- 25. Convertir mm a píxeles
- 26. ¿Cómo puedo convertir una indicación de fecha y hora de aaaa-MM-ddThh: mm: ss: formato SSSZ a MM/dd/aaaa hh: mm: ss.SSS? De ISO8601 a UTC
- 27. java.text.ParseException: Fecha unparseable: aaaa-MM-DD HH: MM: ss.SSSSSS
- 28. Manera eficiente de convertir segundos a minutos y segundos en el servidor sql 2005
- 29. Cómo convertir la fecha en formato "AAAA-MM-DD hh: mm: ss" a UNIX marca de tiempo
- 30. Delphi: Simple hh: mm: ss Temporizador
Tome un vistazo a una [pregunta similar le pregunté hace un tiempo] (http://stackoverflow.com/questions/1025192/memory-leaks-formatting-a-string-to-display-time-each -segundo) que también cubre el aspecto de la memoria y la eficiencia. –