时间戳与时区

在做国际化的过程中,时区、时间必然是要面对的问题。不管是与用户直接交互的页面,还是我们的生产数据,终究都会与时区挂上勾。在处理的时候有比较方便快捷的方式比如列表标题增加数据所在的时区,但是也会有已经有历史包袱数据固定在一个时区的数据。这个时候处理起来就比较棘手,特别是当客户需要做数据核对的时候。特别有效的方式应该是存储时间使用时间戳,刷选条件也对应的使用时间戳。
接下来了解一下时间戳、时区:
时间戳(time-stamp):是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 严格来说,不管你处在地球上的哪个地方,任意时间点的时间戳都是相同的。这点有利于线上和客户端分布式应用统一追踪时间信息。
时区(Time Zone):是地球上的区域使用同一个时间定义。1884年在华盛顿召开国际经度会议时,为了克服时间上的混乱,规定将全球划分为24个时区。
在中国采用首都北京所在地东八区的时间为全国统一使用时间。

[code]
package com.yneit.Test;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;

/**
* Created by 还在路上 on 2017/6/13.
*/
public class Test {

public static void main(String[] arg) {
try {
SimpleDateFormat foo = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println("foo:" + foo.format(new Date()));
// 当前系统默认时区的时间:
Calendar calendar = new GregorianCalendar();
long timeStamp = calendar.getTimeInMillis();
System.out.println("============================");
System.out.println("当前时间:" + calendar.getTime());
System.out.println("时间戳:" + timeStamp);
System.out.println();
System.out.print("时区:" + calendar.getTimeZone().getID() + " ");
System.out.println("时间:" + calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE));

// 时区转换 美国洛杉矶时区
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
calendar.setTimeZone(tz);
System.out.print("时区:" + calendar.getTimeZone().getID() + " ");
System.out.println("时间:" + calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE));

//将时间戳转换为时间:
timeStamp = 1497360000000L;
calendar.setTimeInMillis(timeStamp);
tz = TimeZone.getTimeZone("Asia/Shanghai");
calendar.setTimeZone(tz);
System.out.print("时区:" + calendar.getTimeZone().getID() + " ");
System.out.println("时间:" + calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE));
tz = TimeZone.getTimeZone("America/Los_Angeles");
calendar.setTimeZone(tz);
System.out.print("时区:" + calendar.getTimeZone().getID() + " ");
System.out.println("时间:" + calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE));

Calendar calendar1 = new GregorianCalendar();
calendar1.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND));
System.out.println(foo.format(calendar1.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
}
}[/code]

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据