Ios 用不同的语言组合两个字符串&;LTR

Ios 用不同的语言组合两个字符串&;LTR,ios,nsstring,localized,Ios,Nsstring,Localized,我有两个文本,一个是希伯来语,一个是英语 在第一个文本中,我用希伯来语写了日期 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSLocale *hebrew = [[NSLocale alloc] initWithLocaleIdentifier:@"he_IL"]; // Hebrew [dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm

我有两个文本,一个是希伯来语,一个是英语

在第一个文本中,我用希伯来语写了日期

    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];
开始日期为:2016年8月19日,在NString object strDate

另一方面,我在NSString对象timeForRequest中有文本07:00-16:00

我需要的格式是2016年1月15日16:00-07:00

当我尝试对以下代码执行相同操作时

[NSString stringWithFormat:@"%@ | %@",strDate,timeForRequest]
它像这样告诉我:יםששי,19.08.2016 | 07:00-16:00

观察时间不正确,请帮我从这种情况中走出来


提前谢谢

我很确定这里的问题是,标准日期中的希伯来文日期带有unicode字符,使其从右向左显示。当与时间响应中的“普通”从左到右字符串组合时,这会导致混乱。日期格式化程序正在从希伯来语区域设置中获取该信息

试试这个:

  • 将日期格式字符串更改为
  • [dateFormatter setDateFormat:@“dd.MM.yyyy,EEEE”]

  • 将格式为的字符串更改为
  • NSString*result=[NSString stringWithFormat:@“\u200E%@|%@”,timeForRequest,strDate]

    0x200E unicode字符不可见,但会将渲染恢复到从左到右模式

    在上述步骤之后,这是我得到的输出:


    07:00-16:00|17.08.2016,יםרבעי
    我刚从调试改为发布并安装了Release.exe,现在这两个服务都在运行并且工作没有任何问题

    NSLog(@“%@”,date)
    打印正确的东西吗?是的,它显示的是正确的@dopapapapso,什么是
    模型
    ?模型是NSObject类包含字符串开始日期什么是timeForRequest?使用格式,但当我尝试比较
    07:00-16:00 | 17.08.2016时,יורביעי
    由于该隐藏字符,它给出了错误的结果。也许您可以在任何比较之前删除隐藏的第一个字符:NSString*resultComp=result.length>1?[结果substringFromIndex:1]:结果;然后与resultComp进行比较。