Xpages 中的丹麦语日期格式不正确

Danish date is not formatted correctly in Xpages

在我们的应用程序中,我们实现了所有日期和值都应使用浏览器区域设置显示。
但是,在任何网络浏览器中选择丹麦语作为 locale/language 时,日期格式是错误的。
我们没有发现英语、瑞典语、挪威语格式错误,只有丹麦语格式错误。
日期格式为“20/08/15”,但应为“20-08-2015”

服务器是使用 Server Locale 的 Domino 9.0.1 版本,在测试区域设置输出时我发现它正在服务 "da"。在服务器上更改为 浏览器区域设置 时,设置不会更改日期格式。
我们在不同国家/地区的服务器上已报告此问题。

我试图找到对我们问题的解释 and/or 答案,但失败了。

该应用程序在任何字段、视图列上都没有特定于语言环境的格式……我们希望保持这种状态。我们的应用程序在不同的国家/地区 运行,因此不控制区域设置格式是我们的首选方式。但是,我们希望以特定于语言的正确方式显示日期和数字。

我们没有明确使用任何 Dojo 组件,仅在视图面板中使用普通日期字段和视图列。我们没有设置任何国际选项。

我尝试将语言环境设置为@Sven Hasselbach 在另一个问题中的回答,但失败了。还没试过他的 Xsnippet…

header的例子:

GET /demo/tradesec.nsf HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, sdch
Accept-Language: da,sv;q=0.8,no;q=0.6,en-US;q=0.4,en;q=0.2,nl;q=0.2
DNT: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.37 Safari/537.36
X-Chrome-UMA-Enabled: 1
X-Client-Data: CJe2yQEIo7bJAQicksoBCOeUygEI/ZXKAQi8mMoB

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 8956
Content-Type: text/html;charset=UTF-8
Date: Mon, 17 Aug 2015 07:59:43 GMT
Expires: -1
Keep-Alive: timeout=10, max=100
Tradechannel: Work_and_fun_professionally_done
X-Pad: avoid browser bug

请指教,谢谢!

/米

只需快速检查一下 - 您正在使用的浏览器中是否有任何设置可能会在这里造成任何麻烦?您能否确认使用具有正确区域设置的非 XPages 网页可以正常工作?

我知道我遇到过浏览器在其他情况下试图成为 "clever" 的问题 - 所以我认为尝试确定浏览器或 XPage 是否是罪魁祸首是个好主意;-)

/约翰

XPages 正在使用 ICU4J 库进行日期格式化。该库使用“/”作为丹麦短日期格式的分隔符。

所以代码如下:

com.ibm.icu.text.DateFormat.getDateInstance(
  com.ibm.icu.text.DateFormat.SHORT, 
      new java.util.Locale("da")).toPattern()

给出日期模式,如:

en: M/d/yy
da: dd/MM/yy
sv: yyyy-MM-dd
nb: dd.MM.yy

您可以尝试使用长日期格式:

da (long): d. MMM yyyy
output: 17. aug 2015
da (medium): dd/MM/yyyy
output: 17/08/2015

通过在转换器上设置 dateStyle="long"。

或者,如果您确实需要覆盖丹麦语的特定语言模式,则代码如下:

<xp:viewColumn columnName="_MainTopicsDate" id="viewColumn3">
    <xp:viewColumnHeader value="Date" id="viewColumnHeader3"></xp:viewColumnHeader>
    <xp:this.converter>
        <xp:convertDateTime dateStyle="short" 
           pattern="${javascript: ('da' == context.getLocale().getLanguage())? 
              'd-MM-yyyy': null}">
        </xp:convertDateTime>
    </xp:this.converter>
</xp:viewColumn>