私はNSDate
をString
に変換してからフォーマットを変更しようとしています。しかし、NSDate
をString
に渡すと、空白が生成されます。
let formatter = DateFormatter()
let myString = (String(describing: date))
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let yourDate: Date? = formatter.date(from: myString)
formatter.dateFormat = "dd-MMM-yyyy"
print(yourDate)
詳細情報は、 Apple Dateformatter Document から取得します。dateStringにdateformatを設定する場合は、この リンク を参照してください。詳細dateformatあなたはここで得ることができる ここで
let formatter = DateFormatter()
// initially set the format based on your datepicker date / server String
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let myString = formatter.string(from: Date()) // string purpose I add here
// convert your string to date
let yourDate = formatter.date(from: myString)
//then again set the date format whhich type of output you need
formatter.dateFormat = "dd-MMM-yyyy"
// again convert your date to string
let myStringafd = formatter.string(from: yourDate!)
print(myStringafd)
あなたは出力を得る
私はDate
をString
に変換する間、常にこのコードを使います。 (スイフト3)
extension Date
{
func toString( dateFormat format : String ) -> String
{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
return dateFormatter.string(from: self)
}
}
そしてこう呼んでください。 。
let today = Date()
today.toString(dateFormat: "dd-MM")
DateFormatter
には、フォーマット文字列を調整するのが面倒な人のためのいくつかの出荷日のスタイルがあります。あなたがカスタムスタイルを必要としないならば、これは別のオプションです:
extension Date {
func asString(style: DateFormatter.Style) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = style
return dateFormatter.string(from: self)
}
}
これはあなたに次のスタイルを与えます:
short, medium, long, full
使用例
let myDate = Date()
myDate.asString(style: .full) // Wednesday, January 10, 2018
myDate.asString(style: .long) // January 10, 2018
myDate.asString(style: .medium) // Jan 10, 2018
myDate.asString(style: .short) // 1/10/18
あなたの更新されたcode.updateそれ。
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let myString = formatter.string(from: date as Date)
let yourDate: Date? = formatter.date(from: myString)
formatter.dateFormat = "dd-MMM-yyyy"
print(yourDate!)
フォーマッタを作成するときに留意する必要があるのは、フォーマッタは作成するのにかなり計算コストがかかるため、可能であれば同じインスタンスを再利用することです。以下は、同じフォーマッタをアプリケーション全体で共有できるアプリケーションによく使用するパターンです。 from NSHipster 。
extension DateFormatter {
static var sharedDateFormatter: DateFormatter = {
let dateFormatter = DateFormatter()
// Add your formatter configuration here
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
return dateFormatter
}()
}
使用法:
let dateString = DateFormatter.sharedDateFormatter.string(from: Date())
この拡張子を使うことができます:
extension Date {
func toString(withFormat format: String) -> String {
let formatter = DateFormatter()
formatter.dateFormat = format
let myString = formatter.string(from: self)
let yourDate = formatter.date(from: myString)
formatter.dateFormat = format
return formatter.string(from: yourDate!)
}
}
そしてこれをあなたのView Controllerで次のように使用します(<"yyyy">をあなたのフォーマットに置き換えます):
yourString = yourDate.toString(withFormat: "yyyy")
DateFormatter
を割り当てた後、あなたはフォーマットされた文字列を与える必要があります、そしてあなたはこのように文字列として変換することができます
var date = Date()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let myString = formatter.string(from: date)
let yourDate: Date? = formatter.date(from: myString)
formatter.dateFormat = "dd-MMM-yyyy"
let updatedString = formatter.string(from: yourDate!)
print(updatedString)
出力
2017年3月1日