3

我需要在 jsp 页面的标签中打印当前语言环境中的日期格式。
例如,如果用户的浏览器有区域设置 en_US,我想打印'mm/dd/yyyy';而如果它是 en_GB 'dd/mm/yy'。
有人可以建议获取该信息的 jsp 或 jstl 代码吗?

编辑 我不需要打印日期,我需要根据当前语言环境准确打印字符串“dd/mm/yyyy”或“mm/dd/yyyy”。

4

4 回答 4

2

您需要在 JSP 代码中使用 I18N 和 L18N :

<%@ page import="java.io.*,java.util.Locale" %>

从:Locale_request

 Locale locale = request.getLocale();

并应用DateFormat基于Locale.

DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
String formattedDate = df.format(yourDate);

要获得 a 的实际格式Locale,您可以尝试以下操作:

SimpleDateFormat sf = (SimpleDateFormat) df;
String pattern = sf.toLocalizedPattern();

使用 JSTL 的formatDate

当您使用 JSTL 格式标记<fmt:formatDate><fmt:formatNumber>时,JSTL 会自动处理语言环境解析。根据浏览器的区域设置,JSTL 将显示日期和数字。

<fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="short" />
于 2013-06-26T12:10:43.790 回答
1

试试这个

<%@ page import="java.io.*,java.util.Locale" %>
<%@ page import="javax.servlet.*,javax.servlet.http.* "%>
<%@ page import="java.text.DateFormat,java.util.Date" %>

<%
String title = "Locale Specific Dates";
//Get the client's Locale
Locale locale = request.getLocale( );
String date = DateFormat.getDateTimeInstance(
                              DateFormat.FULL, 
                              DateFormat.SHORT, 
                              locale).format(new Date( ));
%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align="center">
<p>Local Date: <%  out.print(date); %></p>
</div>
</body>
</html>
于 2013-06-26T12:12:42.020 回答
0
<fmt:setLocale value="en_US" scope="session"/>

或者参考这个

于 2013-06-26T12:10:05.947 回答
-1

java.util.ResourceBundle类,主要是getBundle()方法。(您可以使用它,或实现类似的机制。要获取语言环境信息,您可以使用以下代码...

Locale rLocale = request.getLocale();
ResourceBundle bundle = ResourceBundle.getBundle("MyLocale", rLocale);
Locale selectedLocale = bundle.getLocale();
于 2013-06-26T12:12:59.057 回答