在JSP页面中获取当前的区域设置日期格式

时间:2013-06-26 12:06:47

标签: html jsp spring-mvc user-interface jstl

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

修改的 我不需要打印日期,我需要根据当前的区域设置准确打印字符串'dd / mm / yyyy'或'mm / dd / yyyy'。

4 个答案:

答案 0 :(得分: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);

要获得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" />

答案 1 :(得分: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>

答案 2 :(得分:0)

<fmt:setLocale value="en_US" scope="session"/>

或参考this

答案 3 :(得分:-1)

查看java.util.ResourceBundle类,主要是getBundle()方法。 (您可以使用它,或实现类似的机制。要获取区域设置信息,您可以使用以下代码...

Locale rLocale = request.getLocale();
ResourceBundle bundle = ResourceBundle.getBundle("MyLocale", rLocale);
Locale selectedLocale = bundle.getLocale();