I have two text, one in Hebrew language and one in English.
In first text I have date that is in Hebrew.
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *hebrew = [[NSLocale alloc] initWithLocaleIdentifier:@"he_IL"]; // Hebrew
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSSZ"];
NSDate *date = [dateFormatter dateFromString:model.startDate];
NSLog(@"%@", date);
[dateFormatter setDateFormat:@"EEEE,dd.MM.yyyy"];
dateFormatter.locale = hebrew;
NSString *strDate = [dateFormatter stringFromDate:date];
and start Date is : יום שישי,19.08.2016 in NString object strDate
On other hand I have text 07: 00-16: 00 in NSString object timeForRequest
My needed format is יום שני, 15.01.2016 | 16:00 - 07:00
and when I try to do same with following code
[NSString stringWithFormat:@"%@ | %@",strDate,timeForRequest]
it shows me like this :יום שישי,19.08.2016 | 07: 00-16: 00
Observe the time is not correct, please help me to come out from this wired situation.
Thanks in advance.
I'm pretty sure that the problem here is that the hebrew date in strDate is carrying unicode characters that make it display right-to-left. That's causing chaos when combined with the 'ordinary' left-to-right string in timeForResponse. The date formatter is picking that up from the hebrew locale.
Try this:
[dateFormatter setDateFormat:@"dd.MM.yyyy,EEEE"];
NSString *result = [NSString stringWithFormat:@"\u200E%@ | %@", timeForRequest, strDate];
The 0x200E unicode character is invisible but puts the rendering back into left-to-right mode.
After the above, this is the output that I'm getting:
07: 00-16: 00 | 17.08.2016,יום רביעי
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With