nSDateから日付と時刻を取得するにはどうすればよいですか。それらを別々に見たいです。ありがとう
NSDate *localDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
dateFormatter.dateFormat = @"MM/dd/yy";
NSString *dateString = [dateFormatter stringFromDate: localDate];
NSDateFormatter *timeFormatter = [[NSDateFormatter alloc]init];
timeFormatter.dateFormat = @"HH:mm:ss";
NSString *dateString = [timeFormatter stringFromDate: localDate];
日付と時刻を表す多くの異なる方法がありますので、詳細についてはNSDateFormatterを確認してください。
本当に分、時間、日付の値が必要な場合は、NSDateComponentsとNSCalendarを使用します。次のようなものです。
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit
fromDate:[NSDate date]];
次に、コンポーネントのプロパティを使用して、component.hour、component.yearなどで各コンポーネントの値にアクセスできます。
また、NSDateFormatterの例を使用する場合は、NSDateFormatterが重いオブジェクトであることを覚えておいてください。可能であれば、実際に再利用する必要があります。
私は他の答えよりも以下を使用します:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
NSString *formattedDateString = [dateFormatter stringFromDate:yourDate];
[dateFormatter release];
それが持っている利点は、ユーザーがシステム設定で設定したものにフォーマットを設定することです。そうすれば、ユーザーが10/31/11または31/10/11の形式の短い日付を好む場合など、アイテムについて心配する必要がなくなります。利用可能なスタイルのリストについては、 documentation をご覧ください。
Swift 2.2:
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
dateFormatter.timeStyle = .NoStyle
let myDateString = dateFormatter.stringFromDate(myNSDate)
dateFormatter.dateStyle = NSDateFormatterStyle.NoStyle
dateFormatter.timeStyle = .ShortStyle
let myTimeString = dateFormatter.stringFromDate(myNSDate)
Swiftでは、たとえば次のような拡張機能をお楽しみいただけます。
// MARK: - NSDate extension -
extension NSDate {
func toString() -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd MMMM yyyy - HH:mm"
return dateFormatter.stringFromDate(self)
}
func getTime() -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH:mm"
return dateFormatter.stringFromDate(self)
}
func getDate() -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy"
return dateFormatter.stringFromDate(self)
}
}
そして、コード内のどこでも次のことができます。
print("Time right now: \(NSDate().getTime())")
Swift 4 @McCygnus回答のバージョン
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .none
let myDateString = dateFormatter.string(from: Date())
dateFormatter.dateStyle = .none
dateFormatter.timeStyle = .short
let myTimeString = dateFormatter.string(from: Date())