Có cách nào để phát hiện xem thiết bị hiện tại của ứng dụng có sử dụng định dạng 24h của chúng tôi hay không, để tôi có thể sử dụng một NSDateFormatter trong 12 giờ và một cho 24h tùy thuộc vào ngôn ngữ người dùng/Loaction thiết lập? Cũng giống như UIDatePicker phát hiện và hiển thị bộ chọn AM/PM nếu nó là định dạng 12h.Phát hiện xem định dạng thời gian có ở định dạng 12 giờ hoặc 24 giờ
Trả lời
Tôi đã tìm ra, nó khá dễ dàng. Tôi chỉ cần thêm đoạn mã này để 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"));
Và nó hoàn trả YES
hoặc NO
tùy thuộc vào địa điểm.
Cảm ơn câu trả lời của bạn. Nó giúp tôi rất nhiều. – Gypsa
Điều này chỉ hoạt động nếu lịch địa phương sử dụng cùng định dạng như điện thoại nhưng trên iOS, bạn có thể đặt định dạng thời gian cụ thể có thể khác với những gì được sử dụng trong lịch địa phương. – yoeriboven
Dưới đây là phiên bản Swift:
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)
}
Bạn đang sử dụng toán tử bậc ba làm NOT, điều này chỉ khiến bạn khó đọc hơn. Dòng trả về phải là 'return! (PmRange == nil && amRange == nil)' – EmilioPelaez
Ahh, chắc chắn, cảm ơn :) Tôi đã chỉnh sửa ngay bây giờ .. – Wiingaard
Và đây là một Swift 3.0 được cập nhật phiên bản
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)
}
đây là giải pháp nhanh chóng mà làm việc cho tôi, hai ở trên thì không.
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
}
Câu trả lời đúng nhất tôi đoán –
Objective loại 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. php định dạng 12 giờ sang định dạng thời gian 24 giờ chuyển đổi
- 2. Cách chuyển đổi thời gian từ định dạng 24 giờ sang định dạng 12 giờ bằng javascript?
- 3. Phát hiện xem iPhone có hiển thị thời gian ở chế độ 12 giờ hoặc 24 giờ không?
- 4. Chuyển đổi định dạng 12 giờ sang định dạng 24 giờ trong Ruby
- 5. Php xác thực định dạng thời gian 24 giờ
- 6. SimpleDateFormat.getTimeInstance bỏ qua định dạng 24 giờ
- 7. iOS: Thời gian hiển thị ở định dạng 24 giờ nếu ngôn ngữ phù hợp?
- 8. Làm thế nào để chuyển đổi 24 giờ thời gian Chuỗi thành 12 hr định dạng thời gian Chuỗi
- 9. làm thế nào để chuyển đổi định dạng 24 giờ TimeSpan thành định dạng 12 giờ TimeSpan?
- 10. Giờ từ DateTime? theo định dạng 24 giờ
- 11. Thời gian hiển thị ở định dạng 12 giờ trong JavaScript
- 12. Làm thế nào để hiển thị thời gian ở định dạng 12 giờ trong Objective-C?
- 13. Chuyển đổi định dạng datetime đến 12 giờ
- 14. Phát hiện cài đặt thời gian iPhone 24 giờ
- 15. Tìm xem người dùng có thích 12/24 giờ không?
- 16. Chuyển đổi từ 12 giờ đến 24 giờ trong java
- 17. Cần lấy Thời gian trong một định dạng 24 giờ trong khi thêm Time
- 18. Làm cách nào để xác định liệu thiết bị có đang sử dụng định dạng thời gian 12 hoặc 24 giờ không?
- 19. Làm thế nào tôi có thể xác định xem iPhone có được cài đặt hiển thị thời gian 12 giờ hoặc 24 giờ không?
- 20. iphone: NSDateFormatter cách hiển thị thời gian theo định dạng 24 giờ?
- 21. Làm cách nào để chuyển đổi thời gian đồng hồ 12 giờ thành giờ đồng hồ 24 giờ bằng PHP?
- 22. Chuyển đổi thời gian sang định dạng 24 giờ trong Javascript
- 23. định dạng ngày giờ sang định dạng SQL bằng C#
- 24. định dạng giờ trong javascript
- 25. SimpleDateFormat trả về ngày 24 giờ: cách nhận ngày 12 giờ?
- 26. xem định dạng thời gian python
- 27. Làm thế nào để bạn chuyển đổi giữa thời gian 12 giờ và 24 giờ trong PHP?
- 28. Làm cách nào để chuyển đổi thời gian 24 giờ thành 12 giờ?
- 29. Chuyển đổi chuỗi thời gian như (0740) sang định dạng thời gian 12 giờ (AM, PM) như (07:40 AM)
- 30. Javascript: chuyển đổi chuỗi thời gian 24 giờ trong ngày thành 12 giờ với AM/PM và không có múi giờ
Đã trả lời [ở đây] (http://stackoverflow.com/q/1929958/154803) – progrmr
@progrmr rằng chắc chắn một là giải pháp tốt để xác định nếu đồng hồ 24 giờ được đặt hay không nhưng nó phụ thuộc vào hành vi của Trình định dạng ngày tháng. OP muốn thông tin này định dạng một chuỗi bằng cách sử dụng định dạng ngày để giải pháp bao gồm thêm danh mục lớp, tạo định dạng ngày, chuyển đổi ngày thành chuỗi, tìm kiếm chuỗi hai lần cho các ký hiệu AM/PM, sau đó phân nhánh mã của bạn thành định dạng bằng cách sử dụng định dạng 12 giờ hoặc 24 giờ khi nó đã làm điều đó cho bạn. – Joe
@ Joe tôi biết điều đó, nhưng đôi khi bạn cần phải biết vì những lý do khác, như để đặt "AM" trong một UILabel riêng biệt với một phông chữ khác nhau, OP không rõ ràng chính xác lý do tại sao anh muốn biết. – progrmr