请允许任何机构帮助我,自1周以来我遇到过有关客户端和服务器时间显示问题的时间相关问题。
描述:实际上服务器位于德国,当客户端(例如:india)尝试向他的联系人发送任何消息时,它会显示消息发送时间是服务器时间(意味着德国时间)。但我应该说当地具体时间。我用户发送任何然后我这样显示消息发送时间。
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);
。但它显示了服务器所在的时间,但我需要显示特定于语言环境的时间。请帮我。高级谢谢。
答案 0 :(得分:1)
服务器端解决方案要求服务器代码知道客户端的位置。我假设这些信息将以某种方式提供为iso 2-letter code。 java api要求对于以下解决方案的工作,语言也必须是已知的。我假设它可以从国家代码派生,或者明确地以iso 2-/3-letter code提供。
所以修改后的方法可能是:
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);
}
有关详细信息,请参阅the java docs:
答案 1 :(得分: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));
或者使用系统的current timezone格式化数据:
sdf.setTimeZone( TimeZone.getDefault() );
答案 2 :(得分:0)
将始终发送给客户端是不是更好?
客户端总是有关于UTC的信息,可以将其转换为当地时间吗?
答案 3 :(得分:0)
解析/格式化日期对象时需要设置正确的语言环境。如果在客户端浏览器中正确设置了区域设置,则应该能够使用javax.servlet.ServletRequest.getLocale()
方法进行访问。
答案 4 :(得分:0)
实际上我是从客户端完成的。在将服务器时间发送到客户端(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+" "+localeSpecificTime);
});
</script>