java 多时区客户的统一处理详解

涉及到多国化的网站,不仅要考虑语言多国化,还要考虑时间的通用性。

 

首先,要记住: JAVA的 System CurrentTime 就是 utc 的时间。

我们的目的就是要保证服务器存的时间为UTC时间(为什么要强调这句?因为时间是客户输入的,比如一个搜索功能中,客户要查询某个时间段的数据,而数据显示的时候是根据客户的时区来显示的。

 

 

分为

服务端: 又分为system 到 db,基本没啥额外处理。对于程序,后端则要设置个 locale的时区,如果是多国通用,则可以根据一些客户端信息来判断。但比较周全的方法是可以让用户选择,比如google ,phpbb 等就可以让用户自己选时区。这个参数主要是用来对客户端的时区时间转换

 

 

客户端:

JSTL: <fmt:formatDate value="${createdTime}" pattern="yy-MM-dd HH:mm:ss" timeZone="PRC"/>

   或 <fmt:formatDate value="${displayDate}" pattern="yyyy-MM-dd" timeZone="${timeZone}"/>

 

交互:(客户端提交时)

public static Date strToDateTime(String date,String timeZone) {

// date   为客户端自己填写的当地时间
   Date d = null;
   try {
    if(date.length()>10){
     java.text.SimpleDateFormat f= new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    f.setTimeZone(TimeZone.getTimeZone(timeZone));
     d=f.parse(date);
    }else{
     java.text.SimpleDateFormat f= new java.text.SimpleDateFormat("yyyy-MM-dd");
     f.setTimeZone(TimeZone.getTimeZone(timeZone));
     d=f.parse(date);
    }
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   return d;
}

 

闲来无聊,发发代码,互相学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的时概念是非常重要的,因为在开发中需要处理不同时的时间。下面是关于Java的一些详解: 1. 世界时 全球被分为24个时,每个时都有一个对应的UTC偏移量,表示该地与协调世界时(UTC)之间的差异。例如,北京时间是UTC+8,纽约时间是UTC-5。 2. Java Java中的时使用了ID来标识。它们遵循了IETF的时标识符,例如“America/New_York”和“Asia/Shanghai”。这些ID是唯一的,并且对应于特定的时偏移量和时规则。 3. 时的转换 使用Java中的DateTimeFormatter类,可以将时间从一个时转换为另一个时。例如,将纽约时间转换为北京时间: ``` DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime dateTime = LocalDateTime.parse("2022-06-30 10:30:00", formatter); ZoneId newYorkZone = ZoneId.of("America/New_York"); ZoneId beijingZone = ZoneId.of("Asia/Shanghai"); ZonedDateTime newYorkTime = ZonedDateTime.of(dateTime, newYorkZone); ZonedDateTime beijingTime = newYorkTime.withZoneSameInstant(beijingZone); System.out.println(beijingTime.format(formatter)); ``` 4. 时的默认值 Java中的时默认值是系统时。可以使用System类的getProperty()方法获取系统时: ``` System.out.println(System.getProperty("user.timezone")); ``` 5. 时的设置 可以使用System类的setProperty()方法设置时: ``` System.setProperty("user.timezone", "Asia/Shanghai"); ``` 需要注意的是,时设置必须在程序启动时进行,否则可能会出现意料之外的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值