2024年4月25日发(作者:)
java对世界各个时区(TimeZone)的通用转换处理方法 .
在进行国际性软件项目开发的过程中,有时候会碰到一些比较特殊的要求。比如:
比如说,你做的是个购物网站(假设服务器放在中国上海),当全世界客户在你的
网站上下订单买东西后,往往希望看到客户所在地下单时间,比如说我是个美国纽
约人,我在你的网站上下单后,你给我看到一个上海的下单时间,会觉得非常的奇
怪。众所周知,纽约时间相对上海时间大约要晚13小时,如果让客户看到本地时
区的时间,将变得更加符合客户的时间观念,使得客户理解比较方便。
其实,java中早已考虑过世界时区(TimeZone)这个问题,并给出了比较合理的解决
方法,可以比较方便的进行世界时区时间的转化,将一个时区的时间转换成另一个
时区的时间。可以看看下面的的实际例子(运行例子的main()方法)。
关于如何知道客户所在的时区,可以根据客户所在的ip或者用户注册提供的国家
来计算出所在的时区。
Java代码 01./*
02. * Created on 2005-6-10
03. * Author stephen
04. * Email zhoujianqiang AT gmail DOT com
05. * CopyRight(C)2005-2008 , All rights reserved.
06. */
07.package com.softility;
08.
09.import java.text.ParseException;
port java.text.SimpleDateFormat;
11.import java.util.Date;
port java.util.GregorianCalendar;
13.import javeZone;
port java.util.Vector;
15.
16.import com.soft;
17.
18./**
19. * 与日期、时间相关的一些常用工具方法.
20. *
21. * 日期(时间)的常用格式(formater)主要有:
22. * yyyy-MM-dd HH:mm:ss <br>
23. *
24. * @author stephen
25. * @version 1.0.0
26. */
27.public final class DateTool {
28.
29. /**
30. * 对日期(时间)中的日进行加减计算. <br>
31. * 例子:
32. * 如果Date类型的d为 2005年8月20日,那么
33. * calculateByDate(d,-10)的值为2005年8月10日
34. * 而calculateByDate(d,+10)的值为2005年8月30日
35. *
36. * @param d
37. * 日期(时间).
38. * @param amount
39. * 加减计算的幅度.+n=加n天;-n=减n天.
40. * @return 计算后的日期(时间).
41. */
42. public static Date calculateByDate(Date d, int amount) {
43. return calculate(d, GregorianCalendar.DATE, amount);
44. }
45.
46. public static Date calculateByMinute(Date d, int amount) {
47. return calculate(d, GregorianCalendar.MINUTE, amount);
48. }
49.
50. public static Date calculateByYear(Date d, int amount) {
51. return calculate(d, GregorianCalendAR, amount);
52. }
53.
54. /**
55. * 对日期(时间)中由field参数指定的日期成员进行加减计算.
56. * 例子: <br>
57. * 如果Date类型的d为 2005年8月20日,那么
58. * calculate(d,GregorianCalendar.YEAR,-10)的值为1995年8月20日
59. * 而calculate(d,GregorianCalendar.YEAR,+10)的值为2015年8月20日
60. *
61. * @param d
62. * 日期(时间).
63. * @param field
64. * 日期成员.
65. * 日期成员主要有: <br>
66. * 年:GregorianCalendaR
67. * 月:GregorianCalendar.MONTH
68. * 日:GregorianCalendar.DATE <br>
69. * 时:GregorianCalendaR
70. * 分:GregorianCalendar.MINUTE


发布评论