J'essaie de convertir un NSDate
en un String
, puis de changer de format. Mais lorsque je passe NSDate
à String
, il produit des espaces.
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)
vous obtenez les informations détaillées de Apple Dateformatter Document . Si vous souhaitez définir le formatdate pour votre dateString, consultez ceci lien , le formatDateformat que vous pouvez obtenir ici par exemple, faire comme
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)
vous obtenez la sortie comme
J'utilise toujours ce code lors de la conversion de Date
en String
. (Swift 3)
extension Date
{
func toString( dateFormat format : String ) -> String
{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
return dateFormatter.string(from: self)
}
}
et appelle comme ça. .
let today = Date()
today.toString(dateFormat: "dd-MM")
DateFormatter
a certains styles de date d'usine pour ceux qui sont trop paresseux pour bricoler les chaînes de formatage. Si vous n'avez pas besoin d'un style personnalisé, voici une autre option:
extension Date {
func asString(style: DateFormatter.Style) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = style
return dateFormatter.string(from: self)
}
}
Cela vous donne les styles suivants:
short, medium, long, full
Exemple d'utilisation:
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
Votre code mis à jour. Le mettre à jour.
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!)
Lorsque vous créez des formateurs, gardez à l’esprit que vous devez essayer de réutiliser la même instance si vous le pouvez, car les formateurs sont assez coûteux à créer. Ce qui suit est un modèle que j'utilise fréquemment pour les applications où je peux partager le même outil de formatage, adapté de 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
}()
}
Usage:
let dateString = DateFormatter.sharedDateFormatter.string(from: Date())
Vous pouvez utiliser cette extension:
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!)
}
}
Et utilisez-le dans votre contrôleur de vue comme ceci (remplacez <"aaaa"> par votre format):
yourString = yourDate.toString(withFormat: "yyyy")
Après avoir alloué DateFormatter
vous devez donner la chaîne formatée pour pouvoir la convertir en chaîne de cette façon
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)
Sortie
1-mars-2017