У меня есть NSDate
, который неправильно отформатирован.
Я объявил UITextField
в .h:
@property (weak, nonatomic) IBOutlet UITextField *datetimeTextField;
Затем у меня есть сторонний UIPicker, который выбирает дату и вставляет ее в указанное TextField:
// Method to avoid diplaying the keyboard.
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
ActionSheetDatePicker *datePicker = [[ActionSheetDatePicker alloc]initWithTitle:@"Select Date and Time" datePickerMode:UIDatePickerModeDateAndTime selectedDate:[NSDate date] doneBlock:^(ActionSheetDatePicker *picker, id selectedDate, id origin) {
// As you can see here it's taking the correct (non-formatted) date
NSLog(@"Selected %@", selectedDate); // VALUE = Sat Nov 10 10:00:41 2018
//create a date formatter
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//set its format as the required output format
[formatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"];
//get the output date as string
NSString *selectedDateString = [formatter stringFromDate:selectedDate];
self.datetimeTextField.text = selectedDateString;
// And here I get the value I want to store in Parse stored in datetimeTextField.text
NSLog(@"Selected After reformat %@", self.datetimeTextField.text); // VALUE = 10-11-2018 00:35:06
} cancelBlock:^(ActionSheetDatePicker *picker) {
} origin:self.view];
datePicker.minuteInterval = 5;
[datePicker showActionSheetPicker];
return NO;
}
Моя проблема начинается, когда мне нужно вызвать IBAction для сохранения этой NSDate в моем Parse Cloud (у меня есть столбец Date, который принимает только NSDate
.
- (IBAction)createeventAction:(id)sender{
// Here I "catch" the value previously stored from the Picker.
NSString *dateString = datetimeTextField.text; //// 07-11-2018 22:00:42 (correct format)
// Here I convert the NSString into NSDate with the same formatting
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:dateString];
// But for some reason, date prints incorrectly.
NSLog(@"DATE in here ====>>> %@", date); // Sat Nov 10 10:00:41 2018
}
Проблема:
Я хотел бы преобразовать NSString (datetimeTextField.text) в NSDate без потери формата.
РЕДАКТИРОВАТЬ 1:
Я ознакомился с принятым ответом на этот вопрос Как преобразовать NSStrings в NSDate , но по какой-то причине он не работает для меня.
РЕДАКТИРОВАТЬ 2:
Чтобы было понятнее:
Код для преобразования NSDate в NSString.
// We have a date (not formatted) => Sat Nov 10 10:00:41 2018
//create a date formatter
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"];
NSString *selectedDateString = [formatter stringFromDate:selectedDate];
self.datetimeTextField.text = selectedDateString;
// Date formatted => 10-11-2018 00:35:06
Код для преобразования NSString обратно в NSDate:
NSString *dateString = datetimeTextField.text; // 10-11-2018 10:00:41 (correct format)
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:dateString];
NSLog(@"DATE in here ====>>> %@", date); // Sat Nov 10 10:00:41 2018 (not formatted. WHY?)