以下の画像では、私が書いたコードとすべての変数の値を見ることができます。
class fun getCurrentShortDate() -> String {
var todaysDate = NSDate()
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
var DateInFormat = dateFormatter.stringFromDate(todaysDate)
return DateInFormat
}
ご覧のとおり、現在の日付は問題ありませんが、NSDateを文字列に変更しようとしても、うまくいきません。
Xcode 8以降•Swift 3以降
extension Date {
func localizedDescription(dateStyle: DateFormatter.Style = .medium,
timeStyle: DateFormatter.Style = .medium,
in timeZone : TimeZone = .current,
locale : Locale = .current) -> String {
Formatter.date.locale = locale
Formatter.date.timeZone = timeZone
Formatter.date.dateStyle = dateStyle
Formatter.date.timeStyle = timeStyle
return Formatter.date.string(from: self)
}
var localizedDescription: String { return localizedDescription() }
}
extension TimeZone {
static let gmt = TimeZone(secondsFromGMT: 0)!
}
extension Formatter {
static let date = DateFormatter()
}
Date().localizedDescription // "Sep 26, 2018 at 12:03:41 PM"
Date().localizedDescription(in: .gmt) // "Sep 26, 2018 at 3:03:41 PM" UTC TIME
Date().localizedDescription(dateStyle: .short, timeStyle: .short) // "9/26/18, 12:03 PM"
Date().localizedDescription(dateStyle: .full, timeStyle: .full) // "Wednesday, September 26, 2018 at 12:03:41 PM Brasilia Standard Time"
Date().localizedDescription(dateStyle: .full, timeStyle: .full, in: .gmt) // "Wednesday, September 26, 2018 at 3:03:41 PM Greenwich Mean Time"
extension Date {
var fullDate: String { return localizedDescription(dateStyle: .full, timeStyle: .none) }
var shortDate: String { return localizedDescription(dateStyle: .short, timeStyle: .none) }
var fullTime: String { return localizedDescription(dateStyle: .none, timeStyle: .full) }
var shortTime: String { return localizedDescription(dateStyle: .none, timeStyle: .short) }
var fullDateTime: String { return localizedDescription(dateStyle: .full, timeStyle: .full) }
var shortDateTime: String { return localizedDescription(dateStyle: .short, timeStyle: .short) }
}
print(Date().fullDate) // "Friday, May 26, 2017\n"
print(Date().shortDate) // "5/26/17\n"
print(Date().fullTime) // "10:16:24 AM Brasilia Standard Time\n"
print(Date().shortTime) // "10:16 AM\n"
print(Date().fullDateTime) // "Friday, May 26, 2017 at 10:16:24 AM Brasilia Standard Time\n"
print(Date().shortDateTime) // "5/26/17, 10:16 AM\n"
Swift 3.0:の更新)Date
の拡張機能を作成します
extension Date {
func string(format: String) -> String {
let formatter = DateFormatter()
formatter.dateFormat = format
return formatter.string(from: self)
}
}
使用法:
Date().string(format: "yyyy-MM-dd")
Swift 2.2:NSDate
の拡張機能を作成する
extension NSDate {
func dateStringWithFormat(format: String) -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = format
return dateFormatter.stringFromDate(self)
}
}
使用法:
NSDate().dateStringWithFormat("yyyy-MM-dd")
String
をNSDate
に簡単に変換するための拡張機能を作成できます。
_extension NSDate {
func dateFromString(date: String, format: String) -> NSDate {
let formatter = NSDateFormatter()
let locale = NSLocale(localeIdentifier: "en_US_POSIX")
formatter.locale = locale
formatter.dateFormat = format
return formatter.dateFromString(date)!
}
}
_
あなたの関数よりNSDate().dateFromString("2015-02-04 23:29:28", format: "yyyy-MM-dd HH:mm:ss")
することができ、これは動作するはずです。入力日付は、出力日付と同じ形式である必要はありません。
_func getCurrentShortDate() -> String {
var todaysDate = NSDate().dateFromString("2015-02-04 23:29:28", format: "yyyy-MM-dd HH:mm:ss")
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
var DateInFormat = dateFormatter.stringFromDate(todaysDate)
return DateInFormat
}
println(getCurrentShortDate())
_
出力は_04-02-2015
_です。
Swift 3
@dooversによって作成された拡張機能と、この website のいくつかのフォーマット文字列を使用すると、次のようになります。
extension Date {
func string(format: String) -> String {
let formatter = DateFormatter()
formatter.dateFormat = format
return formatter.string(from: self)
}
}
使用法:
Date().string(format: "EEEE, MMM d, yyyy") // Saturday, Oct 21, 2017
Date().string(format: "MM/dd/yyyy") // 10/21/2017
Date().string(format: "MM-dd-yyyy HH:mm") // 10-21-2017 03:31
Date().string(format: "MMM d, h:mm a") // Oct 21, 3:31 AM
Date().string(format: "MMMM yyyy") // October 2017
Date().string(format: "MMM d, yyyy") // Oct 21, 2017
Date().string(format: "E, d MMM yyyy HH:mm:ss Z") // Sat, 21 Oct 2017 03:31:40 +0000
Date().string(format: "yyyy-MM-dd'T'HH:mm:ssZ") // 2017-10-21T03:31:40+0000
Date().string(format: "dd.MM.yy") // 21.10.17
次のように、ミリ秒を日付オブジェクトに渡すこともできます。
Date(1508577868947).string(format: "EEEE, MMM d, yyyy") // Saturday, Oct 21, 2017
Swift 4または5
extension Date {
static func getCurrentDate() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy HH:mm:ss"
return dateFormatter.string(from: Date())
}
}
使用
print(Date.getCurrentDate())
Appleが提案する方法はこちら
let formatter = DateFormatter()
formatter.locale = Locale.current
formatter.dateStyle = .short
let dateString = formatter.string(from: date)
または、.short、.medium、.long、および.fullの事前定義されたフォーマットが非常に適切である場合、ロケールでテンプレートを作成します
let formatter = DateFormatter()
formatter.locale = Locale.current
formatter.setLocalizedDateFormatFromTemplate("MM/dd/yyyy")
let dateString = formatter.string(from: date)
let dateformatter1 = DateFormatter()
dateformatter1.dateFormat = "ccc, d MMM yyy"
let dateString1 = dateformatter1.string(from: datePicker.date)
print("Date Selected \(dateString1)")
labelDate.text = dateString1
let dateformatter2 = DateFormatter()
dateformatter2.dateFormat = "dd-MM-yyyy"
let dateString2 = dateformatter2.string(from: datePicker.date)
print("Date Selected \(dateString2)")
let dateformatter3 = DateFormatter()
dateformatter3.dateFormat = "dd/MM/yyyy"
let dateString3 = dateformatter3.string(from: datePicker.date)
print("Date Selected \(dateString3)")
let dateformatter4 = DateFormatter()
dateformatter4.dateFormat = "dd MMMM yyyy hh:mm a"
let dateString4 = dateformatter4.string(from: datePicker.date)
print("Date Selected \(dateString4)")
Codzify.com でこの記事を参照しました。本当に助かりました。