日付を次のようにしたいとします。
|1988|December|30|
これらをdateFormatterに追加するにはどうすればよいですか、さらに言えば、フォーマットを次のようにします。
30 in the month of December in the year of 1998
今は1988年12月30日、標準フォーマットを使いたいのですが、入れたテキストも一緒に入れたいです。
特に上記の場合、フォーマットとパイプは、フォーマットとパイプの間にスペースがない日付または月の日付フォーマットに隣接します。
フォーマットを設定するだけでこれは可能ですか?
たとえば、任意のテキスト(一重引用符で囲む)を日付形式で挿入できます。
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
[fmt setDateFormat:@"dd' in the month of 'MMMM' in the year of 'yyyy"];
NSString *s = [fmt stringFromDate:[NSDate date]];
結果:
2013年の7月の09
Swiftバージョン:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEEE' text here 'h:mm' and there 'a"
iOS 13用に更新、Swift 5、Xcode 11、Martin Rの回答に基づいて構築
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone.current
dateFormatter.locale = Locale.current
dateFormatter.dateFormat = "dd' in the month of 'MMMM' in the year of 'yyyy"
let stringDate = dateFormatter.string(from: Date())
print(stringDate)
// printed:
// 7 in the month of October in the year of 2019
P.S.アポストロフィが必要な場合は、次を使用します:''
文字列内に直接。例えば "MMM d, ''yy"
-> Nov 10, '19
拡張:
序数標識も追加したい場合(たとえば、「13th」の後の「th」)、実際には日付フォーマッター文字列内で追加できます。
だからあなたが望むならNov 10th
、コードは次のようになります。
/// Get date.
let date = Date()
/// Get just the day of the date.
let dayAsInt = Calendar.current.component(.day, from: date)
/// Init the formatter.
let dateFormatter = DateFormatter()
/// Set the format string.
/// Notice we include the 'MMM' to extract the month from the date, but we use a variable to get the 'th' part.
dateFormatter.dateFormat = "MMM '\(dayAsInt.getStringWithOrdinalIndicatorIfPossible)'"
let formattedDate = dateFormatter.string(from: date)
/// Will print out Nov 10th or Apr 1st or whatever.
これが私が助けるために作った拡張です:
/// This variable only adds the ordinal indicator if the Int that is calling this function can be converted to an NSNumber.
/// An ordinal indicator is the `rd` after `3rd` or the `st` after `1st`.
var getStringWithOrdinalIndicatorIfPossible: String {
let formatter = NumberFormatter()
formatter.numberStyle = .ordinal
return formatter.string(from: NSNumber(value: self)) ?? "\(self)"
}