如何将服务器日期时间转换为网站的客户端机器日期时间
问题描述:
我有日期时间字段我有日期时间字段到数据库中存储的通用时间,即UTC时间。我想在客户端时区和格式中显示客户端机器的日期时间。如何将服务器日期时间转换为网站的客户端机器日期时间
示例:来自US的某人更新了站点的数据库字段,并将其存储为UTC格式。来自印度的人去看看这个网站。我想要的是来自印度的人看到IST或澳大利亚的时间在他的本地机器时间格式中看到的不是服务器时间格式和区域。
最好的办法是做什么?如果有,请粘贴代码片段。
Thanx提前!
答
在Java中的一个例子,如果你很高兴与
String utcTimePattern = "yyyy-MM-dd HH:mm:ss Z"; // Defined in database or whatever
String timeString = "2010-09-08 12:51:14 +0000"; // Event time kept in database
SimpleDateFormat timeFormat = new SimpleDateFormat(utcTimePattern);
// Parse server time and get Date object with default settings
Date localTime = timeFormat.parse(timeString);
System.out.println(localTime);
的想法是,你从服务器获取UTC时间字符串,并使用默认时区和日期格式格式化的客户端。我的机器上输出是
Wed Sep 08 15:51:14 EEST 2010
答
如果你的网站有用户帐户,你可以有,他们选择相关的时区设置,否则我认为有办法得到来自浏览器的时区,但我认为其对Java脚本的相当依赖
答
看看这个讨论:
How to display the correct time?
正好有你正在寻找的答案。
另一个策略是读取客户的IP,将其映射到国家和地区,然后确定可能的时区。它可能不准确,但即使机器/浏览器时间/位置设置完全错误,它也具有大多数工作的优势。
或者,让用户选择他的位置并将选择存储在提交每个新请求的cookie中。
答
我希望这对你的作品的这个outpu应是你需要 输出美国的字符串格式: “M/DD/YYYY”
输出SP: “dd/M/yyyy”
System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern
最好的方法是使用语言日期/时间函数。我们在谈什么语言? (: – hudolejev 2010-06-08 09:41:25
但如何发送客户端时区到服务器?我正在使用C# – Shailendra 2010-06-08 09:53:01
通常你不应该显示时间与正确的时区看起来像一个客户端应用程序的任务在服务器端,你应该保持所有时间值如果可能,以UTC表示。 – hudolejev 2010-06-08 10:04:18