NSDateFormatter "Month" in 3 letters instead of full word
Solution 1
Have you tried: [formatter setDateFormat:@"dd-MMM-YYYY HH:mm"];
and then [formatter stringFromDate:someNSDate];
Solution 2
IF you get the two things in the wrong order, you don't get the expected output.
[formatter setDateFormat:@"MMM"];
[formatter setDateStyle:NSDateFormatterMediumStyle];
does NOT give the same results as:
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setDateFormat:@"MMM"];
(The second of these two snippets is now happily handing out Sep Oct etc in my app)
Solution 3
In SWIFT
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy HH:mm"
dateFormatter.stringFromDate(NSDate())
Solution 4
This is a stripped down solution that works with Swift 4 in producing a 3 letter month output:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM YYYY, HH:mm:ss"
And to verify:
print(dateFormatter.string(from: Date())) // 20 Mar 2018, 23:41:40
As previously noted, MMM
is the correct syntax for getting the desired month output.
Solution 5
for swift 4 go with:
if let dateFormatter = DateFormatter(){
dateFormatter.dateStyle = .medium
// eventually:
//let locale = Locale(identifier: ...
//dateFormatter!.locale = locale
dateFormatter.dateStyle = .medium
dateFormatter!.dateFormat = "dd MMM YYYY, HH:mm:ss"
} else..
..
Comments
-
bruno over 3 years
NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"dd-MM-YYYY HH:mm"]; [formatter setTimeZone:[NSTimeZone systemTimeZone]];
If i choose
MM
i get the month in number:09-05-2012 15:33
If i chooseMMMM
i get the month in word:09-May-2012 15:33
What i wanted, was the month in 3 letters abbreviation.
Eg:January
would beJan
In this case May is correct because it only has 3 letters.