I just referred to the Q & A at iOS reference for NSDateFormatter.
Link: http://developer.apple.com/library/ios/#qa/qa2010/qa1480.html
Here is my problem I get a string from a webservice which is of this format:
"dd-mm-yyyy xx:xx:xx AM"
My actual purpose is just to use the date and not the time at all. But I just use the same format in the NSDateFormatter and I was able to get the answers properly for all date related problems except on one mobile which is iOS 4.1.
Please let me know what is the most optimal solution for this problem. I think, I should just use date and that will solve my problem or any other suggestions for this problem?
Your question wasn't really helpful in terms of the result you get form iOS 4.1. Anyways...
Try this...
// convert date
NSString *webStr = [NSString stringWithFormat:#"28-10-2010 04:44:22 AM"];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:#"dd-MM-yyyy HH:mm:ss a"];
NSDate* date = [formatter dateFromString:webStr];
// set up the new date format
[formatter setDateFormat:#"dd-MM-yyyy"];
NSString *myDate = [formatter stringFromDate:date];
[formatter release];
Related
I'm using the following code to convert NSString to NSDate:
NSDate *date = [NSDate convertStringToDate:strDate andFormatter:#"MM dd"];
+ (NSDate *)convertStringToDate:(NSString *)dateString andFormatter:(NSString *)formatter
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter setDateFormat:formatter];
dateFormatter.timeZone = [NSTimeZone systemTimeZone];
return [dateFormatter dateFromString:dateString];
}
NSString is #"07 15". But my NSDate is nil. On a simulator it is fine but on device with iOS7 it is nil.
Do you have any suggestions about it?
If your code works in iOS 6, then this may just be a bug in iOS 7. Be sure to file a bug report if you think that's the case.
If it doesn't work in iOS 6, then it may be that a month and day aren't sufficient to specify a date. Try adding a year and see if you get a valid date that way.
Note that questions about iOS 7 should be posted to Apple's developer forums, not here.
you may need to set the locale like this:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:#"en_US_POSIX"];
I solved this problem including the locale to the formatter.
hope this helps.
The output comes, for example: 17-10-1990 18:30:00 +0000. When we retrieve the value in NSDateFormatter the day is changed to 16-10-1990. No error comes.
NSDateFormatter *sdayFormat = [[NSDateFormatter alloc] init];
[sdayFormat setDateFormat:#"yyyy-MM-dd HH:mm:ss"];
NSString *sdayString = [sdayFormat stringFromDate:datePicker.date];
please help me. I'm new in iphone developer.
to see how to set dateFormatter go to this link - NSDateFormatter and yyyy-MM-dd
and to see the list of all possible formats go to this link
Check this out!
NSString *tDate = #"17-10-1990 18:30:00 +0000";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:#"dd-MM-yyyy HH:mm:ss Z:"];
NSDate *fDate = [dateFormat dateFromString:tDate];
NSLog(#"Given date :%# - Converted Date :%#",tDate,fDate);
use this link as reference for any date related operations
http://www.stepcase.com/blog/2008/12/02/format-string-for-the-iphone-nsdateformatter/
Hope this helps
I'm new to iPhone development. I want to set default date to NSDate Object as string. I don't see any easy way or method...
I think there might be a method in NSCalender? If there's such a method, please tell me.
Thanks in advance.
I'm not totally clear on what you are asking, but to create an instance of an NSDate object with the current date, one calls:
NSDate * myDate = [NSDate date];
If you are saying that you have a c-string or NSString that needs to be parsed to initialize an NSDate object, that's another question.
I have some code posted here:
How get a datetime column in SQLite with Objective C
that shows how to create NSDates from NSStrings using NSDateFormatter.
If you want to create an NSDate from a string, you need to use an NSDateFormatter to do it. It's important to note that the formatter will use the current locale's time zone when constructing the date, unless you put a time-zone in as part of the format. For more information about constructing time zones, see NSTimeZone.
For example, to create a date using the ubiquitous format '2011-01-16 00:00' in UTC, you would do:
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:#"yyyy-MM-dd HH:mm"];
// Only certain abbreviations are okay, like UTC. See docs for more info
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:#"UTC"]];
NSDate* midnight_26_jan_2011_utc = [formatter dateFromString:#"2011-01-26 00:00"];
// this will display in your system locale
// (for me, it shows 2011-01-25 19:00 +0500 because I'm America/New_York time)
NSLog(#"date: %#", midnight_26_jan_2011_utc);
[formatter release];
Edit: Added time to format string.
You will need to look at the NSDate and NSDateFormatter classes. Here's a simple example of how to use them:
NSString* defaultDateString = [NSString stringWithFormat:#"2011-01-22 15:30:00"];
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:#"yyyy-MM-dd HH:mm:ss"];
NSDate* defaultDate = [dateFormatter dateFromString:defaultDateString];
[dateFormatter release];
and if you wanted to get the string from a date you can just use:
NSString* defaultDateString = [dateFormatter stringFromDate:defaultDate];
NSDateFormatter *DateFormatter=[[NSDateFormatter alloc] init];
[DateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];
[DateFormatter setDateFormat:#"yyyy-MM-dd hh:mm:ss"]; //here,you can set the date format as you need
NSDate *now = [[[NSDate alloc] init]autorelease];
NSString *theDate = [DateFormatter stringFromDate:now];
Now, you can use the string the date. :)
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc]init]autorelease];
[dateFormatter setDateFormat:#"yyyy-mm-dd"];
NSDate *yourDate = [dateFormatter dateFromString:#"2011-01-26"];
I have this string...
2010-08-24T16:00:00-05:00
and I'd like to extract the time portion from it (i.e. 16:00) and convert it to its 12-hour equivalent (i.e. 04:00 pm). I'm trying to use NSDateFormatter to accomplish this, but it's not working...
NSDateFormatter* dateformatter = [[NSDateFormatter alloc] init];
[dateformatter setDateFormat:#"hh:mm a"];
NSDate *date1 = [dateformatter dateFromString:[listOfTimes objectAtIndex:0]];
[dateformatter release];
Can I use NSDateFormatter with this date format? If not, how can I extract the time and convert it to its 12-hour time equivalent?
Thanks!
The problem has to do with parsing the colon. I asked the same question and the solution is here: How to parse a date string into an NSDate object in iOS?
I think you should be able to do something like the following.
// create the date formatter object
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:#"yyyy-MM-dd'T'HH:mm:ss"];
NSDate* date = [formatter dateFromString:dateString];
// set up the new date format
[formatter setDateFormat:#"hh:mm:ss"];
NSString *twelveHourTime = [formatter stringFromDate:date];
[formatter release];
Update: Fixed the dateFormatter string format. I had the line below, but the Z seems to be unnecessary. Timezones always screw me up. :-/
[formatter setDateFormat:#"yyyy-MM-dd'T'HH:mm:ssZ"];
This answer needs to be updated. As of iOS 10 the system provided NSISO8601DateFormatter is available for this particular format.
How to convert NSString 2010-08-03 04:37:31.0 to August 3, 2010?
Is it possible?
This is probably a duplicate but NSDateFormatter is what you are looking for.
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:#"yyyy-MM-dd HH:mm:ss.S"];
NSDate *date = [dateFormatter dateFromString:inDateString];
[dateFormatter setDateFormat:#"MMMM dd',' yyyy"];
NSString *outDateString = [dateFormatter stringFromDate:date];
There are two problems with this approach though.
The input string is that it lacks timezone data
Different cultures expect a different order than Month Day Year. That can be fixed if you use one of the generic NSDateFormatterStyle formats like NSDateFormatterLongStyle.
Check out the NSDateFormatter documentation. You probably want a format string of #"%B %e, %Y" for the output.