반응형
초 정수를 HH : MM, iPhone으로 변환
나는 이것으로 고생하고있다. HH : MM 형식의 레이블에 표시하려는 값 (초)이 있습니다. 나는 인터넷을 오랫동안 검색하고 몇 가지 답을 찾았지만 완전히 이해하지 못했거나 내가 원하는 것을하는 이상한 방법처럼 보입니다. 누군가 나를 도울 수 있다면 좋을 것입니다! 내가이 게임을 처음 접했기 때문에이 질문은 경험이 많은 사람에게는 정말 기본적인 질문처럼 보일 수 있습니다.
나는 당신이 찾고있는 것과 같은 것을 찾고 있었지만 하나를 찾을 수 없었습니다. 그래서 하나를 썼습니다.
- (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];
}
Swift 에서도 완벽하게 작동합니다 .
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)
}
iOS 8.0 이상 버전에서는 NSDateComponentsFormatter
. 예를 들어 '9:30'은 아니지만 '09 : 30 '과 같이 첫 번째 앞에 0이없는 문자열 형식을 지정합니다. 그러나 포맷터를 사용하려면 다음 코드를 사용할 수 있습니다.
-(NSString *)getTimeStringFromSeconds:(double)seconds
{
NSDateComponentsFormatter *dcFormatter = [[NSDateComponentsFormatter alloc] init];
dcFormatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorPad;
dcFormatter.allowedUnits = NSCalendarUnitHour | NSCalendarUnitMinute;
dcFormatter.unitsStyle = NSDateComponentsFormatterUnitsStylePositional;
return [dcFormatter stringFromTimeInterval:seconds];
}
이것이 내가하는 방법입니다.
-(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];
}
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)"
}
}
Swift에 대한 @Aks의 답변 이 작동 하는 동안 코드의 값을 하드 코딩하는 데 약간 회의적입니다. @edukulele의 대답 은 훨씬 더 깨끗하지만 Objective-C에 있습니다. 나는 그것을 약간 변경하여 Swift로 번역했습니다. 나는 일반적으로 포맷터를 lazy var
s로 작성합니다.
private lazy var dateFormatter: NSDateComponentsFormatter = {
let formatter = NSDateComponentsFormatter()
formatter.zeroFormattingBehavior = .Pad
formatter.allowedUnits = [.Hour, .Minute, .Second]
formatter.unitsStyle = .Positional
return formatter
}()
시계 카운트가있는 Swift 용
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)"
}
}
참고 URL : https://stackoverflow.com/questions/1739383/convert-seconds-integer-to-hhmm-iphone
반응형
'Programing' 카테고리의 다른 글
부트 스트랩에서 열 고정 위치 만들기 (0) | 2020.11.07 |
---|---|
JObject에서 비어 있거나 널 (null) JToken 확인 (0) | 2020.11.07 |
자바 : 긴 비트가 0 또는 1인지 확인 (0) | 2020.11.06 |
Date 개체에 요일 추가 (0) | 2020.11.06 |
업로드되는 dropzone.js 파일 수를 제한하는 방법은 무엇입니까? (0) | 2020.11.06 |