0

请任何人帮助我自 1 周以来,我一直面临有关客户端和服务器时间显示问题的时间相关问题。

说明:实际上服务器位于德国,当客户端(例如:印度)尝试向他的联系人发送任何消息时,它会显示消息发送时间是服务器时间(意味着德国时间)。但我应该说本地特定时间。我用户发送任何然后我显示这样的消息发送时间。

public static String retrieveFullDateFromDateinAMPM ( Date date ) {
    SimpleDateFormat sdf =
        new SimpleDateFormat("dd/MM/yy hh:mm a", Locale.getDefault());
    return sdf.format(date);
}  

在这里,我将日期值发送到我的辅助方法retrieveFullDateFromDateinAMPM(Date date) ,我将像这样将消息发送时间返回return sdf.format(date);到网页。但它显示了服务器定位时间,但我应该需要显示特定于语言环境的时间。请帮我。进阶谢谢。

4

5 回答 5

1

服务器端解决方案要求服务器代码知道客户端的位置。我假设此信息将以某种方式以iso 2 字母代码的形式提供。java api 要求,要使以下解决方案正常工作,还必须知道该语言。我假设它可以从国家代码派生或明确提供为iso 2-/3-字母代码

所以修改后的方法可能是:

public static String retrieveFullDateFromDateinAMPM ( Date date, String lang, String country ) {
    SimpleDateFormat sdf =
        new SimpleDateFormat("dd/MM/yy hh:mm a", Locale ( lang, country ) )
    ;

    return sdf.format(date);
}

有关更多详细信息,请参阅java 文档

于 2013-09-13T10:14:43.433 回答
1

首先,Date对特定时区一无所知。您需要打电话SimpleDateFormat#setTimeZone来设置特定的时区。

考虑如下代码在您的实例上设置IST(印度标准时间)时区:DateFormat

DateFormat sdf = new SimpleDateFormat("dd/MM/yy hh:mm a", Locale.getDefault());
sdf.setTimeZone(TimeZone.getTimeZone("IST"));

// Will print the date-time in the IST timezone  
System.out.println(sdf.format(date));

或者使用系统的当前时区格式化数据:

sdf.setTimeZone( TimeZone.getDefault() );
于 2013-09-13T10:19:37.737 回答
0

总是向客户发送UTC不是更好吗?

客户总是有关于 UTC 的信息,并且可以将其转换为本地时间吗?

于 2013-09-13T10:14:46.730 回答
0

在解析/格式化日期对象时,您需要设置正确的语言环境。如果在客户端浏览器中正确设置了区域设置,您应该可以使用javax.servlet.ServletRequest.getLocale()方法访问。

于 2013-09-13T12:50:35.807 回答
0

实际上我是从客户端完成的。意味着在将服务器时间发送到客户端(html,jsp ....)之后,我编写了一些这样的 Jquery 代码。这里请在您的客户端将服务器日期转换为 .getTime() side.(example new Date().getTime() == $('#message_creation_time').val())

  <script type="text/javascript">
    $(document).ready(function(){
    var date = new Date(parseInt($('#message_creation_time').val())); 
    var localeSpecificTime = date.toLocaleTimeString().replace(/:\d+ /, ' ');
    var dateString =   date.toDateString();$('.message_creation_time_display').html(dateString+"&nbsp;&nbsp;"+localeSpecificTime);
  });
</script>
于 2013-10-21T04:34:00.507 回答