3

我正在使用 JQuery 日历为应用程序生成日期字符串。如果我将语言设置为英语,我会得到这样的日期字符串:

星期五 • 2014 年 10 月 10 日

JQ Calendars 不处理时间,所以我自己格式化字符串的时间部分:

[ • UTC-04:00 上午 12:00]</p>

(为了清楚起见,括号被包括在内;它们不会成为最终字符串的一部分。)接下来,我只是将这两个字符串加在一起,得到:

星期五 • 2014 年 10 月 10 日[ • UTC-04:00 上午 12:00]

这正是我想要的。但是,当我将语言设置为希伯来语时,我的结果是:

2014 年 10 月 10 日

[ • UTC-04:00 上午 12:00]</p>

2014 年 10 月 10 日[ • UTC-04:00 上午 12:00]</p>

请注意 RTL 希伯来语月份和年份之间时间字符串的奇怪插入。

我已经尝试将两个字符串的部分包装在方向代码(U+202A、U+202C 等)中,但没有成功。看起来日期字符串已经是 RTL 和 LTR 的混合体,但是我已经搜索过它并且找不到任何方向字符,尽管我很可能会阻止这个搜索。

关于如何解决这个问题的任何想法?无论好坏,我希望时间字符串“跟随”日期字符串而不会出现奇怪的中断,即使这在技术上可能不正确。我知道 Javascript 的 toLocaleString() 功能,但它还没有得到很好的支持,所以我想至少使用上面的方法作为后备。

4

1 回答 1

2

我解决了这个问题。事实证明,希伯来语并不是严格意义上的 RTL。字符串的数字部分呈现 LTR,即使单词和句子呈现 RTL。所以上面显示的结果是“正确的”,因为我将我的时间字符串附加到日期字符串的“结尾”上——它紧接在 2014 年最后一个数字的右侧。

通过 JQ Calendars 生成带有空格和项目符号字符的日期字符串作为格式的一部分,“重置”格式,因此字符串的结尾跟随在年份的左侧。对时间字符串进行显式嵌入,以“U+202A”开头,将时间字符串作为一个整体插入日期字符串之后,而不插入结果。最后,我结束了

2014 年 2 月 10 日 • UTC-04:00 上午 12:00

这虽然不是严格意义上的 RTL,但可以很好地满足我的目的。

于 2014-09-27T13:15:05.090 回答