2017-09-18 3 views
1

Si la date système est au format 24 heures. Je veux régler la date et l'heure sélectionnées au format 12 heures avec AM/PM au champ de texte comme vue d'entrée. J'essaye de convertir la date et l'heure choisies mais son me donnant le format de 24 heures. Est-ce que quelqu'un peut m'aider s'il vous plait. Voici mon code pour la conversion:Comment définir la date et l'heure de UIDatePicker à UITextField au format 12 heures

let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm" 
    let dateAsString = dateFormatter.string(from: datePickerView.date) 

    dateFormatter.dateFormat = "yyyy-MM-dd h:mm a" 
    let date = dateFormatter.date(from: dateAsString) 
    let DateIn12 = dateFormatter.string(from: date!) 
    print("12 hour formatted Date:", DateIn12) 

Répondre

1

Vous semblez faire un travail inutile ici.

Étant donné que vous avez déjà une date, cela devrait fonctionner:

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd h:mm a" 
let date12 = dateFormatter.string(from: datePickerView.date) 
print("12 hour formatted Date:", date12) 
0

Vous pouvez obtenir la date dans un format que vous voulez à partir de la valeur de la date du sélecteur de date. Voici quelques options qui pourraient vous aider.

let datePickerView = UIDatePicker() 
datePickerView.date = Date() 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd h:mm a" 
var dateAsString = dateFormatter.string(from: datePickerView.date) 
print(dateAsString) 
dateFormatter.dateFormat = "MMM-yy-dd HH:mm" 
dateAsString = dateFormatter.string(from: datePickerView.date) 
print(dateAsString) 

Cela donne

2017-09-18 1:18 PM 
Sep-17-18 13:18 

Vous ne devriez pas avoir besoin de la seconde moitié de votre code.

0

Vous devez transmettre datepickerview.date dans le format de date. essayer

let dateFormatter = DateFormatter() 
print("Date:=\(datePickerView.date)") 
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss a" 
let DateIn12 = dateFormatter.string(from: datePickerView.date) 
print("12 hour formatted Date:", DateIn12) 
+0

Merci pour votre réponse, mais la date de mon système est de 24 heures et quand j'imprime l'heure Date12 son donner 24 heures de temps. J'ai besoin de temps en 12 heures. – user2586519

+0

@ user2586519 Vous pouvez essayer maintenant avec ma réponse mise à jour, espérons que cela fonctionne pour vous. – Hitesh

-1

Remplacez votre code pour convertir la date de 24 heures au format 12 heures avec le code suivant

let formatter = DateFormatter() 
    //Formatter "yyyy-MM-dd HH:mm a" for 24 hours time 
    // "yyyy-MM-dd hh:mm a" for 12 hours time 
    // So you need to write only 
    formatter.dateFormat = "yyyy-MM-dd hh:mm a" 
    let twelveHourDate = formatter.string(from: datePickerView.date) 
    print("12 hour format date is \(twelveHourDate)") 
+0

Je ne sais pas pourquoi vous votez pour la réponse. Pour donner cette réponse, j'ai implémenté et testé cette méthode en jeu par moi-même (ce qui prend du temps), j'ai fait de mon mieux pour donner la réponse car je vois la question, je ne sais pas comment tu décides que ça se répète , Bro toute la bonne réponse sera similaire à l'autre. Donc, si ma réponse est répétée, sauf une réponse, tous sont répétés parce que tous ont donné la même réponse. Conclusion: S'il vous plaît ne votez pas si vous ne pouvez pas voter, je n'ai pas triché cette réponse de n'importe où ailleurs que je l'écris moi-même. –

0

dateFormat = "aaaa-mm-jj h: mm a"

Pour obtenir le temps en format 24 heures en majuscule "H" est utilisé dans le formateur tandis que en minuscule "h" vous donne l'heure au format 12 heures.

Ainsi, vous pouvez créer le format de date à chaque fois par vous-même en gardant cela à l'esprit.

Merci.