我需要在jsp页面的标签中打印当前语言环境中的日期格式。
例如,如果用户的浏览器具有区域设置en_US,我想打印'mm / dd / yyyy';如果它是en_GB'dd / mm / yy'。
有人可以建议使用jsp或jstl代码获取该信息吗?
修改的 我不需要打印日期,我需要根据当前的区域设置准确打印字符串'dd / mm / yyyy'或'mm / dd / yyyy'。
答案 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();