为什么不是rtl?

时间:2013-12-13 06:26:20

标签: asp.net string right-to-left

我的程序用波斯语创建一条消息,它有时间像12:00或12:45。我想向用户显示此消息。 html视图中的此消息格式不正确。

问题在于时间如下:54:12或00:12。

如何更改格式?

for (int j = 1; j < time[i].Count; j++)
{
    msg4SmsPart2 += countPoll.ToString() + ". " + date + " " + time[i][j] + " ";
}

tim [i] [j]是我的时间:12:00,12:45,....

最终消息是:1。1392/9/27 12:45 2. 1392/9/27 13:37 3. 1392/9/28 13:50 4. 1392/9/28 10:00 - 12: 00。

但在我的网站上所有时间都是相反的:1。1392/9/27 45:12 2. 1392/9/27 37:13 3. 1392/9/28 50:13 4. 1392/9/28 00 :10 - 12:00

当我测试这段代码时:

for (int j = 1; j < time[i].Count; j++)
                {
                    msg2times += countPoll.ToString() + ". " + date + " " + time[i][j] + " ";

                }

msg2times的格式是正确的但是当我用波斯语添加一个句子时,它是无法解决的!

msg4SmsPart2 += msg2times;

3 个答案:

答案 0 :(得分:1)

试试这个

          for (int j = 1; j < time[i].Count; j++)
            {
                msg4SmsPart2 = countPoll.ToString() + ". " + date + " " + time[i][j] + " ";
                msg4SmsPart2 += msg4SmsPart2.ToString("HH:mm:ss");//formating for time 
            }

答案 1 :(得分:1)

这样可以解决问题:

for (int j = 1; j < time[i].Count; j++)
{
    var time = string.Empty;
    if (time[i][j] != null)
    {
        time = (Convert.ToDateTime(time[i][j])).ToString("hh:mm");
    }

    msg4SmsPart2 += countPoll.ToString() + ". " + date + " " + time[i][j] + " ";
}

答案 2 :(得分:1)

这可能是 Unicode-BiDi 控件的问题,所以你可以尝试一下:

添加

U+202A:   LEFT-TO-RIGHT EMBEDDING (LRE)

在时间之前控制角色和

U+202C:   POP DIRECTIONAL FORMATTING (PDF)

就在它之后。

请参阅Unicode controls vs. markup for bidi support