2014-09-27 93 views
2

我正在使用JQuery日历为应用程序生成日期字符串。如果我设置语言为英语,我得到一个日期字符串是这样的:在Javascript中连接双向字符串

周五•2014年10月10日

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

[•上午12:00 UTC-04:00]

(括号中包括了清晰;他们不会是最后海峡的一部分。ING)接下来,我只添加这两个字符串连接在一起,并得到:

周五•2014年10月10•上午十二时00 UTC-04:00]

这正是我想要。然而,当我做同样的事情用语言设置为希伯来语,我的结果是:

שישי•10אוקטובר2014

[•上午12:00 UTC-04:00]

שישי•10אוקטובר教案汇编[•上午12:00 UTC-04:00]

注意RTL希伯来年份和月份之间的TIMESTRING的奇插。

我试过在方向代码(U + 202A,U + 202C等)中包装两个字符串的一部分,但没有成功。它看起来像日期字符串已经是RTL和LTR的混合,但我已经通过它搜索,并找不到任何方向字符,虽然我可能会躲过这个搜索。

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

回答

2

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

使用空格和项目符号字符作为格式化的一部分生成日期字符串(通过JQ日历),“重置”格式设置,以便字符串的末尾位于年份的左侧。在'U + 202A'之前进行时间字符串的显式嵌入,在日期字符串之后整体地插入时间字符串,而不插入结果。最后,我风与

الجمعة•10تشرينالأول2014•上午12:00 UTC-04:00

这虽然不是严格的RTL,提供我的目的只是罚款。