【问题标题】:Get current locale date format in a JSP page获取 JSP 页面中的当前语言环境日期格式
【发布时间】:2013-06-26 12:06:47
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    request 获取Locale

     Locale locale = request.getLocale();
    

    并基于Locale 应用DateFormat

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

    要获得 Locale 的实际格式,您可以尝试以下方法:

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

    使用 JSTL 的 formatDate

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

    <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="short" />
    

    【讨论】:

    • 好的,但我想知道格式是什么,因为想根据当前的语言环境打印在标签 'dd/mm/yyyy' 或 'mm/dd/yyyy' 中
    • 我怎样才能达到这个结果?
    【解决方案2】:

    试试这个

    <%@ 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>
    

    【讨论】:

      【解决方案3】:
      <fmt:setLocale value="en_US" scope="session"/>
      

      或参考this

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2023-04-03
          • 2011-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-23
          • 2017-04-11
          相关资源
          最近更新 更多