16

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

在第一个文本中,我有希伯来语的日期。

    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];

开始日期是: יום שישי,19.08.2016 in NString object strDate

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

我需要的格式是יום שני, 15.01.2016 | 16:00 - 07:00

当我尝试对以下代码做同样的事情时

[NSString stringWithFormat:@"%@ | %@",strDate,timeForRequest]

它向我展示了这样的:יום שישי,19.08.2016 | 07:00-16:00

观察时间不正确,请帮助我摆脱这种有线情况。

提前致谢。

4

2 回答 2

4

我很确定这里的问题是 strDate 中的希伯来日期带有 unicode 字符,使其从右到左显示。当与 timeForResponse 中的“普通”从左到右的字符串结合使用时,这会导致混乱。日期格式化程序是从希伯来语语言环境中提取的。

尝试这个:

  1. 将您的日期格式字符串更改为

[dateFormatter setDateFormat:@"dd.MM.yyyy,EEEE"];

  1. 将您的字符串格式更改为

NSString *result = [NSString stringWithFormat:@"\u200E%@ | %@", timeForRequest, strDate];

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

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

07: 00-16: 00 | 17.08.2016,יום רביעי

于 2016-08-17T17:32:48.327 回答
1

我只需要从 Debug 更改为 Release 并安装 Release .exe,现在这两个服务都在运行并且没有任何问题

于 2016-08-17T20:14:34.973 回答