Java 服务器和客户端时间



请任何机构帮助我,自 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);到网页。但它显示了服务器定位时间,但我应该需要显示区域设置特定时间。请帮助我。 高级谢谢。

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

请考虑以下代码,在DateFormat实例上设置IST(印度标准时间)时区:

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() );
服务器

端解决方案要求服务器代码知道客户端的位置。 我假设此信息将以某种方式作为 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 文档:

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

客户端将始终拥有有关UTC的信息,并可以将其转换为本地时间?

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

实际上我是从客户端完成的。这意味着在将服务器时间发送到客户端(html,jsp...)之后,我编写了一些这样的Jquery代码。在这里,请在客户端将服务器日期转换为 .getTime()。(示例 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>

相关内容

  • 没有找到相关文章

最新更新