web-dev-qa-db-ja.com

NSDateによる時刻と日付の取得

nSDateから日付と時刻を取得するにはどうすればよいですか。それらを別々に見たいです。ありがとう

30
Safari
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を確認してください。

50
Brodie

本当に分、時間、日付の値が必要な場合は、NSDateComponentsとNSCalendarを使用します。次のようなものです。

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit
                                                                   fromDate:[NSDate date]];

次に、コンポーネントのプロパティを使用して、component.hour、component.yearなどで各コンポーネントの値にアクセスできます。

また、NSDateFormatterの例を使用する場合は、NSDateFormatterが重いオブジェクトであることを覚えておいてください。可能であれば、実際に再利用する必要があります。

17
Moszi

私は他の答えよりも以下を使用します:

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)
10
McCygnus

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())") 
2
Luca Davanzo

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())
0
anoop4real