Format a date from a string

风流意气都作罢 提交于 2019-11-28 10:27:01

You will need to create an NSDateFormatter, and then set it's dateFormat to match the first date you have, eg:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

That will set your date formatter to recognise your date string. You can then obtain an NSDate object from this using

NSDate *myDate = [dateFormatter dateFromString:myDateString]; // myDateString is the 2012-05-29 23:55:52 string

This gives you a full NSDate object representing that date. Now you need to reformat the date and turn it back into a string, so set the dateFormat on your formatter to the new format, and get a new string representation of the returned date:

[dateFormatter setDateFormat:@"dd/MM\nyyyy"];
NSString *newlyFormattedDateString = [dateFormatter stringFromDate:myDate];
[dateFormatter release], dateFormatter = nil;

And voila! You have your new date :)

If you're only doing simple string processing, Going through a date object is not really needed.

 let dateString = "2012-05-29 23:55:52"
 let dateParts = dateString.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "- :")) 
 let newDateString = "\(dateParts[2])/\(dateParts[1])\n\(dateParts[0])"

 print(newDateString)
Jignesh Patel

Please find following code to convert date from one format to another format. It will give time in your current zone.

func convertDateFormat(sourceString : String, sourceFormat : String, destinationFormat : String) -> String{

    let dateFormatter = DateFormatter();
    dateFormatter.dateFormat = sourceFormat;

    if let date = dateFormatter.date(from: sourceString){
        dateFormatter.dateFormat = destinationFormat;
        return dateFormatter.string(from: date)
    }else{
        return ""
    }
}
JFrank

For those who prefer to use extension.

extension String {
func formattedDate(inputFormat: String, outputFormat: String) -> String {
    let inputFormatter = DateFormatter()
    inputFormatter.dateFormat = inputFormat

    if let date = inputFormatter.date(from: self) {
        let outputFormatter = DateFormatter()
        outputFormatter.dateFormat = outputFormat
        return outputFormatter.string(from: date)
    } else {
        return self  // If the string is not in the correct format, we return it without formatting
    }
}

Use:

tfDate.text = strDate.formattedDate(inputFormat: "yyyy-MM-dd", outputFormat: "dd/MM/yyyy")
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!