博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java改时区
阅读量:6580 次
发布时间:2019-06-24

本文共 3138 字,大约阅读时间需要 10 分钟。

code:

package com.soofound.framework.util;import java.io.IOException;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.TimeZone;/** * 设置时区 *  * @author zxf * @date 2015-11-4 */// java -classpath . com.linux.test.base.SetTimeZonepublic class SetTimeZone {    public static void main(String[] args) {        setTimeZone();        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        String time1 = df.format(Calendar.getInstance().getTime());        System.out.println(time1);    }    /**     * 设置时区 
* * 注:xx:59:59时,可能有问题。可以循环2次验证后再设置 */ public static void setTimeZone() { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH"); String time = df.format(Calendar.getInstance().getTime()); /** * 如果当前java获取的时间与linux的'date'命令获取的时间一致,则不修改时区 */ String osTime = time(); System.out.println("def java time: " + time + ", os time: " + osTime); if ( time.equals(osTime) ) { return; } /** * 先获取往前减的时区 */ TimeZone correct = getCorrect("GMT-%d");// 如: GMT-8 () /** * 往前减的时区没有,则获取往后加的时区 */ if ( correct == null ) { correct = getCorrect("GMT+%d");// 如: GMT+8 } /** * 如果找到正确的时区,则设置为默认时区 */ if ( correct != null ) { System.out.printf("set TimeZone: %s %n", correct.getID()); osTime = time(); SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH"); String time1 = df1.format(Calendar.getInstance().getTime()); System.out.println("set . java time: " + time1 + ", os time: " + osTime); TimeZone.setDefault(correct); } } /** * 时区区间:1-16,一般1-12就可以了 * * @param format * @return */ private static TimeZone getCorrect(String format) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH"); for ( int i = 1; i <= 16; i++ ) { String tzName = String.format(format, i);// 减 | 加 TimeZone tz = TimeZone.getTimeZone(tzName); df.setTimeZone(tz); String time = df.format(Calendar.getInstance().getTime()); String linexTime = time(); if ( time.equals(linexTime) ) { return tz; } } return null; } /** * 获取系统时间 * * @return */ private static String time() { try { String cmd = "date '+%F %H'"; Process pro = Runtime.getRuntime().exec(new String[] { "sh", "-c", cmd }); InputStream is = pro.getInputStream(); byte[] bs = new byte[1024]; int len = is.read(bs, 0, 1024); String time = new String(bs, 0, len); if ( time != null ) time = time.trim(); return time; } catch ( IOException e ) { return null; // return "2015-11-04 19";// windows test } catch ( Exception e ) { e.printStackTrace(); return null; } }}

 

转载于:https://www.cnblogs.com/feng2015/p/4940031.html

你可能感兴趣的文章
Codeforces 893 Rumor 并查集/DFS
查看>>
static 和final
查看>>
在DataTable中执行DataTable.Select("条件")返回DataTable;
查看>>
【Foreign】动态规划 [分治][DP]
查看>>
ajax的post和get请求的使用
查看>>
Tomcat虚拟主机
查看>>
U3D5.3.5f Monodevelop 仅支持到.NET 3.5
查看>>
POI操作excel
查看>>
浏览器的DOM操作
查看>>
HDU Problem 1051 Wooden Sticks 【LIS】
查看>>
EF实体框架常见问题
查看>>
ZOJ 3640 Help Me Escape
查看>>
Eclipse开发工具介绍
查看>>
putty与emacs
查看>>
Windows上验证过的一些乱七八糟的笔记
查看>>
设置桌面背景
查看>>
js判断手机的横竖屏调整样式
查看>>
[2018.12.28]BZOJ2815 [ZJOI2012]灾难
查看>>
C#下实现的半角转与全角的互转
查看>>
PreparedStatement vs Statement
查看>>