アプリの現在のデバイスが12時間24時間フォーマットを使用しているかどうかを検出する方法はないので、ユーザーの言語に応じてNSDateFormatterを12時間、/loactionの設定? Just Like UIDatePickerは、AM/PMピッカーが12時間形式であればそれを検出して表示します。時間フォーマットが12時間または24時間のフォーマットであるかどうかを検出する
答えて
私はそれを簡単に理解しました。私はちょうどviewDidLoad
にこのコードを追加:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setDateStyle:NSDateFormatterNoStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
NSString *dateString = [formatter stringFromDate:[NSDate date]];
NSRange amRange = [dateString rangeOfString:[formatter AMSymbol]];
NSRange pmRange = [dateString rangeOfString:[formatter PMSymbol]];
BOOL is24h = (amRange.location == NSNotFound && pmRange.location == NSNotFound);
[formatter release];
NSLog(@"%@\n",(is24h ? @"YES" : @"NO"));
そして、それは完全ロケールに応じYES
またはNO
返します。
あなたの答えをありがとう。それは私の多くを助けます。 – Gypsa
これは、ローカルカレンダーが電話機と同じ形式を使用している場合にのみ機能しますが、iOSでは、ローカルカレンダーで使用されているものと異なることがある時間形式を特に設定できます。 – yoeriboven
はスウィフトのバージョンです:
func using12hClockFormat() -> Bool {
let formatter = NSDateFormatter()
formatter.locale = NSLocale.currentLocale()
formatter.dateStyle = NSDateFormatterStyle.NoStyle
formatter.timeStyle = NSDateFormatterStyle.ShortStyle
let dateString = formatter.stringFromDate(NSDate())
let amRange = dateString.rangeOfString(formatter.AMSymbol)
let pmRange = dateString.rangeOfString(formatter.PMSymbol)
return !(pmRange == nil && amRange == nil)
}
3進演算子をNOTとして使用しているため、読みにくくなります。返す行はこの 'return!(pmRange == nil && amRange == nil)'でなければなりません。 – EmilioPelaez
ああ、確かに、私はそれを今編集しました。 – Wiingaard
そして、ここでは、これが私のために働いた迅速なソリューションですスウィフト3.0アップデートバージョン
func using12hClockFormat() -> Bool {
let formatter = DateFormatter()
formatter.locale = Locale.current
formatter.dateStyle = .none
formatter.timeStyle = .short
let dateString = formatter.string(from: Date())
let amRange = dateString.range(of: formatter.amSymbol)
let pmRange = dateString.range(of: formatter.pmSymbol)
return !(pmRange == nil && amRange == nil)
}
で、上記のこれら二つはしませんでした。
let dateString : String = DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.current)!
if(dateString.contains("a")){
// 12 h format
return true
}else{
// 24 h format
return false
}
私が推測する最も正しい答え –
のObjective CカテゴリNSDate+Extensions
:
@import Foundation;
@interface NSDate (Extensions)
- (NSString *)getTimeString;
@end
#import "NSDate+Extensions.h"
@implementation NSDate (Extensions)
- (NSString *)getTimeString
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
if ([self isTwelveHourDateFormat]) {
[formatter setDateFormat:@"hh:mm\ndd MMM"];
}
else {
[formatter setDateFormat:@"HH:mm\ndd MMM"];
}
return [formatter stringFromDate:self];
}
- (BOOL)isTwelveHourDateFormat
{
NSString *dateFormat = [NSDateFormatter dateFormatFromTemplate:@"j" options:0 locale:[NSLocale currentLocale]];
return [dateFormat containsString:@"a"];
}
@end
- 1. 24時間以上の時間フォーマットを使用するColdfusion DateDiff
- 2. Zend locale 12時間または24時間を取得する
- 3. 12時間から24時間に変換する
- 4. Javaで24時間を12時間に変換する
- 5. RegEx for 00:00時間フォーマット> 24
- 6. フォーマット時間
- 7. Rubyで12時間24時間形式に変換する
- 8. 24時間/ 12時間の時計の問題
- 9. PHPで12時間から24時間の間にどのように変換しますか?
- 10. jQueryのフォーマット時間
- 11. j2meで12時間から24時間に変換するには?
- 12. 12/24時間表示設定を検出する
- 13. hh:mm aa(12時間形式)HH:mm(24時間形式)で変換
- 14. DateTime AM/PMフォーマットを24時間フォーマットに変換
- 15. Bashとawk:フィールドを12時間から24時間クロックに変換する
- 16. HHとしてVB.netで12時間まで24時間の時間を変換する方法:ミリメートルのAM/PM
- 17. 24時間から12時間に変換するにはどうすればよいですか?
- 18. DateTimeを24時間形式にフォーマットする方法は?
- 19. 現在のロケールがPHPで24時間または12時間の時刻形式を持っているかどうかを調べる方法は?
- 20. Androidタイムクラスのフォーマット時間
- 21. PHPの時間フォーマット変換
- 22. PHP - HH:MM:SSを12時間にフォーマットするHH:MM:文字列
- 23. 24時間の時間のドロップダウン
- 24. 時間を「24時間軍事時間」と書いていますか?
- 25. 24時間制の開閉時間
- 26. 24時間以上の時間表現
- 27. python:秒から時、分、秒までのフォーマット時間
- 28. 過去24時間の時間フィールドを持つレコードを検索
- 29. 12時間
- 30. どのように表示する12時間の形式で時間iphoneで
はすでに[ここ](http://stackoverflow.com/q/1929958/154803)間違いなく – progrmr
@progrmrに答え24時間制が設定されているかどうかを判断するには良い解決策ですが、Date Formattersの動作に依存します。 OPは、この情報が日付フォーマッタを使って文字列をフォーマットするようにしました。これは、クラス・カテゴリの追加、日付フォーマッタの作成、日付の文字列への変換、AM/PMシンボルの文字列の2回の検索、すでに12時間または24時間形式のいずれかを使用してフォーマットしてください。 – Joe
@ジョー私はそれを知っていますが、別の理由で、 "AM"を別のフォントの別のUILabelに入れるのが好きであることが必要な場合があります。 – progrmr