精华内容
下载资源
问答
  • 由于服务器时区不是东八区,且不方便修改服务器时区,而存数据库的需要是北京时间的datetime类型,目前用的方法如下: ``` public static Date getCurrentDate() { LocalDateTime datetime = LocalDateTime....
  • Java语言中,可以通过java.util.Calendar类取得一个本地时间或者指定时区的时间实例,如下: // 取得本地时间: Calendar cal = Calendar.getInstance(); //取得指定时区的时间:  TimeZone zone = TimeZone....

    既可以用旧API(JDK8之前),也可以使用新API。以下用旧API为例:

    在Java语言中,可以通过java.util.Calendar类取得一个本地时间或者指定时区的时间实例,如下:

    // 取得本地时间:
    Calendar cal = Calendar.getInstance();
    //取得指定时区的时间:      
    TimeZone zone = TimeZone.getTimeZone(“GMT-8:00);
    Calendar cal = Calendar.getInstance(zone);
    
    
    //获取指定时区
    Calendar cal = Calendar.getInstance(Locale.CHINA);
    
    
    
    /**
    * 获得东八区时间
    *
    * @return
    */
    public static String getChinaTime() {
    TimeZone timeZone = TimeZone.getTimeZone("GMT+8:00");
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    simpleDateFormat.setTimeZone(timeZone);
    return simpleDateFormat.format(new Date());
    
    

    先取得UTC时间,然后再转换为东八区时间

    /**
    * 得到UTC时间,类型为字符串,格式为"yyyy-MM-dd HH:mm"
    * 如果获取失败,返回null
    *
    * @return
    */
    public static String getUTCTimeStr() {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     
    StringBuffer UTCTimeBuffer = new StringBuffer();
    // 1、取得本地时间:
    Calendar cal = Calendar.getInstance();
    // 2、取得时间偏移量:
    int zoneOffset = cal.get(Calendar.ZONE_OFFSET);
    // 3、取得夏令时差:
    int dstOffset = cal.get(Calendar.DST_OFFSET);
    // 4、从本地时间里扣除这些差量,即可以取得UTC时间:
    cal.add(Calendar.MILLISECOND, -(zoneOffset + dstOffset));
    int year = cal.get(Calendar.YEAR);
    int month = cal.get(Calendar.MONTH) + 1;
    int day = cal.get(Calendar.DAY_OF_MONTH);
    int hour = cal.get(Calendar.HOUR_OF_DAY);
    int minute = cal.get(Calendar.MINUTE);
    int second = cal.get(Calendar.SECOND);
    UTCTimeBuffer.append(year).append("-").append(month).append("-").append(day);
    UTCTimeBuffer.append(" ").append(hour).append(":").append(minute).append(":").append(second );
    try {
    format.parse(UTCTimeBuffer.toString());
    return UTCTimeBuffer.toString();
    } catch (ParseException e) {
    e.printStackTrace();
    }
     
    return null;
    }
    /**
    * 将UTC时间转换为东八区时间
    * @param UTCTime
    * @return
    */
    public static String getLocalTimeFromUTC(String UTCTime){
    Date UTCDate;
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     
    String localTimeStr = null ;
    try {
    UTCDate = format.parse(UTCTime);
    format.setTimeZone(TimeZone.getTimeZone("GMT-8")) ;
    localTimeStr = format.format(UTCDate) ;
    } catch (ParseException e) {
    e.printStackTrace();
    }
     
    return localTimeStr ;
    }
    
    

    获取各个时区的时间

    /**
    * 获得任意时区的时间
    *
    * @param timeZoneOffset
    * @return
    */
    public static String getFormatedDateString(float timeZoneOffset) {
    if (timeZoneOffset > 13 || timeZoneOffset < -12) {
    timeZoneOffset = 0;
    }
    int newTime = (int) (timeZoneOffset * 60 * 60 * 1000);
    TimeZone timeZone;
    String[] ids = TimeZone.getAvailableIDs(newTime);
    if (ids.length == 0) {
    timeZone = TimeZone.getDefault();
    } else {
    timeZone = new SimpleTimeZone(newTime, ids[0]);
    }
     
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    sdf.setTimeZone(timeZone);
    return sdf.format(new Date());
    
    
    展开全文
  • java calender获取时间

    千次阅读 2014-03-02 21:37:05
    1、获取年月日,时间 Calendar c = Calendar.getInstance(TimeZone.... //获取东八区时间 int year = c.get(Calendar.YEAR); //获取年 int month = c.get(Calendar.MONTH) + 1; //获取月份,0表示1月份 int

    1、获取年月日,时间
    Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));    //获取东八区时间
      int year = c.get(Calendar.YEAR);    //获取年
      int month = c.get(Calendar.MONTH) + 1;   //获取月份,0表示1月份
      int day = c.get(Calendar.DAY_OF_MONTH);    //获取当前天数
      int first = c.getActualMinimum(c.DAY_OF_MONTH);    //获取本月最小天数
      int last = c.getActualMaximum(c.DAY_OF_MONTH);    //获取本月最大天数
      int time = c.get(Calendar.HOUR_OF_DAY);       //获取当前小时
      int min = c.get(Calendar.MINUTE);          //获取当前分钟
      int xx = c.get(Calendar.SECOND);          //获取当前秒
     
      SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      String curDate = s.format(c.getTime());  //当前日期
      System.out.println("当前时间:"+year + "-" + month + "-"+ day + " "+time + ":" + min +":" + xx);
      System.out.println("第一天和最后天:" + first +"," + last);
      System.out.println("当前日期curDate====:" + curDate);
     
    输出结果:
    当前时间:2012-9-25 22:50:54
    第一天和最后天:1,30
    当前日期curDate:2012-09-25 22:50:54
     
    二、
    Calendar的计算
      c.add(Calendar.YEAR, 1);
      c.add(Calendar.MONTH, 1);
      c.add(Calendar.DAY_OF_MONTH, 1);
      int year2 = c.get(Calendar.YEAR);
      int month2 = c.get(Calendar.MONTH) + 1;
      int day2 = c.get(Calendar.DAY_OF_MONTH);
      int firstD = c.getActualMinimum(c.DAY_OF_MONTH);
      int lastD = c.getActualMaximum(c.DAY_OF_MONTH);
      System.out.println("当前时间:"+year2 + "-" + month2 + "-"+ day2 + " "+time + ":" + min +":" + xx);
      System.out.println("第一天和最后天:" + firstD +"," + lastD);
     
    输出结果:
    当前时间:2013-10-26 23:4:3
    第一天和最后天:1,31
    三、
    
    获取上个月的年、月、日
    
    Calendar c=Calendar.getInstance();
    
    c.add(Calendar.MONTH, -1);//上个月
    
    SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    String year=String.valueOf(c.get(Calendar.YEAR));
    
    String topDay = String.valueOf(c.getActualMinimum(Calendar.DAY_OF_MONTH));
    
    String lastDay = String.valueOf(c.getActualMaximum(Calendar.DAY_OF_MONTH)); 
    
    //上个月
    
    String lastMonth=String.valueOf(c.get(Calendar.MONTH)+1).length()==2?String.valueOf(c.get(Calendar.MONTH)+1):"0"+String.valueOf(c.get(Calendar.MONTH)+1);
    
    String topDayMonth=year+"-"+lastMonth+"-"+"01" + " 00:00:00";
    
    String lastDayMonth = year+"-"+lastMonth+"-"+lastDay+ " 23:59:59";
    
    System.out.println("###year:" + year);
    
    System.out.println("###last month:" + lastMonth);
    
            System.out.println("###topday:" + topDayMonth);
    
            System.out.println("###lastday:" + lastDayMonth);
    
    
     
    
    输出结果
    
    ###year:2013
    
    ###last month:04
    
    ###topday:2013-04-01 00:00:00
    
    ###lastday:2013-04-30 23:59:59
    /**
         * 获取某个日期(someDay) n 天前的日期
         * 
         * @param someDay 格式:YYYYMMDD
         * @param n
         * @return
         */
        public static String getSomeDayBeforeNDay(String someDay, int n, String format)
        {
            try
            {
                SimpleDateFormat sdf = new SimpleDateFormat(format);
                Date date = sdf.parse(someDay);
                Calendar cal = Calendar.getInstance();
                cal.setTime(date);
                cal.add(Calendar.DAY_OF_MONTH, -n);
                return sdf.format(cal.getTime());
            }
            catch (ParseException e)
            {
                e.printStackTrace();
                // System.out.println(e.getMessage());
            }
            
            return null;
        }
        
        /**
         * 获取某个日期(someDay) n 天后的日期
         * 
         * @param someDay 格式:YYYY-MM-DD
         * @param n
         * @return
         */
        public static String getSomeDayAfterNDay(String someDay, int n)
        {
            try
            {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                Date date = sdf.parse(someDay);
                Calendar cal = Calendar.getInstance();
                cal.setTime(date);
                cal.add(Calendar.DAY_OF_MONTH, n);
                return sdf.format(cal.getTime());
            }
            catch (ParseException e)
            {
                e.printStackTrace();
                // System.out.println(e.getMessage());
            }
            
            return null;
        }
    /**
         * 获取某个月(someMon) n 月前的月份
         * 
         * @param someMon 格式:yyyyMM
         * @param n
         * @return 格式:yyyyMM
         */
        public static String getSomeMonBeforeNMon(String someMon, int n)
        {
            try
            {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
                Date date = sdf.parse(someMon);
                Calendar cal = Calendar.getInstance();
                cal.setTime(date);
                cal.add(Calendar.MONTH, -n);
                return sdf.format(cal.getTime());
            }
            catch (ParseException e)
            {
                e.printStackTrace();
                // System.out.println(e.getMessage());
            }
            return "";
        }
        
        /**
         * 取某个年(someYear) n 年前的年份
         * 
         * @param someYear 格式:yyyy
         * @param n
         * @return 格式:yyyy
         * @see [类、类#方法、类#成员]
         */
        public static String getSomeYearBeforeNYear(String someYear, int n)
        {
            try
            {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
                Date date = sdf.parse(someYear);
                Calendar cal = Calendar.getInstance();
                cal.setTime(date);
                cal.add(Calendar.YEAR, -n);
                return sdf.format(cal.getTime());
            }
            catch (ParseException e)
            {
                e.printStackTrace();
                // System.out.println(e.getMessage());
            }
            return "";
        }

    /**
         * 获得上个月第一天
         * 
         * @return
         */
        public static String getLastMonFirst()
        {
            Calendar ca = Calendar.getInstance();
            ca.set(Calendar.MONTH, Calendar.getInstance().get(Calendar.MONTH) - 1);
            ca.set(Calendar.DAY_OF_MONTH, 1);
            SimpleDateFormat s = new SimpleDateFormat("yyyyMMdd");
            return s.format(ca.getTime());
        }
        
        /**
         * 获得上个月最后一天
         * 
         * @return
         */
        public static String getLastMonLast()
        {
            Calendar ca = Calendar.getInstance();
            ca.set(Calendar.MONTH, Calendar.getInstance().get(Calendar.MONTH) - 1);
            ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
            SimpleDateFormat s = new SimpleDateFormat("yyyyMMdd");
            return s.format(ca.getTime());
        }






    展开全文
  • Calendarc=Calendar.getInstance(TimeZone.getTimeZone("GMT+08:...//获取东八区时间intyear=c.get(Calendar.YEAR);//获取年intmonth=c.get(Calendar.MONTH)+1;//获取月份,0表示1月份intday=c.get(Calendar.DAY_OF...

    Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00")); //获取东八区时间

    int year = c.get(Calendar.YEAR); //获取年

    int month = c.get(Calendar.MONTH) + 1; //获取月份,0表示1月份

    int day = c.get(Calendar.DAY_OF_MONTH); //获取当前天数

    int first = c.getActualMinimum(c.DAY_OF_MONTH); //获取本月最小天数

    int last = c.getActualMaximum(c.DAY_OF_MONTH); //获取本月最大天数

    int time = c.get(Calendar.HOUR_OF_DAY); //获取当前小时

    int min = c.get(Calendar.MINUTE); //获取当前分钟

    int xx = c.get(Calendar.SECOND); //获取当前秒

    SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    String curDate = s.format(c.getTime()); //当前日期

    System.out.println("当前时间:"+year + "-" + month + "-"+ day + " "+time + ":" + min +":" + xx);

    System.out.println("第一天和最后天:" + first +"," + last);

    System.out.println("当前日期curDate====:" + curDate);

    输出结果:

    当前时间:2012-9-25 22:50:54

    第一天和最后天:1,30

    当前日期curDate:2012-09-25 22:50:54

    Calendar的计算

    c.add(Calendar.YEAR, 1);

    //当前年份加1年

    c.add(Calendar.MONTH, 1);

    //当前月份加1个月

    c.add(Calendar.DAY_OF_MONTH, 1);

    //当前天数加1天

    int year2 = c.get(Calendar.YEAR);

    int month2 = c.get(Calendar.MONTH) + 1;

    int day2 = c.get(Calendar.DAY_OF_MONTH);

    int firstD = c.getActualMinimum(c.DAY_OF_MONTH);

    int lastD = c.getActualMaximum(c.DAY_OF_MONTH);

    System.out.println("当前时间:"+year2 + "-" + month2 + "-"+ day2 + " "+time + ":" + min +":" + xx);

    System.out.println("第一天和最后天:" + firstD +"," + lastD);

    输出结果:

    当前时间:2013-10-26 23:4:3

    第一天和最后天:1,31

    获取上个月的年、月、日

    Calendar c=Calendar.getInstance();

    c.add(Calendar.MONTH, -1);//上个月

    SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    String year=String.valueOf(c.get(Calendar.YEAR));

    String topDay = String.valueOf(c.getActualMinimum(Calendar.DAY_OF_MONTH));

    String lastDay = String.valueOf(c.getActualMaximum(Calendar.DAY_OF_MONTH));

    //上个月

    String lastMonth=String.valueOf(c.get(Calendar.MONTH)+1).length()==2?String.valueOf(c.get(Calendar.MONTH)+1):"0"+String.valueOf(c.get(Calendar.MONTH)+1);

    String topDayMonth=year+"-"+lastMonth+"-"+"01" + " 00:00:00";

    String lastDayMonth = year+"-"+lastMonth+"-"+lastDay+ " 23:59:59";

    System.out.println("###year:" + year);

    System.out.println("###last month:" + lastMonth);

    System.out.println("###topday:" + topDayMonth);

    System.out.println("###lastday:" + lastDayMonth);

    输出结果

    ###year:2013

    ###last month:04

    ###topday:2013-04-01 00:00:00

    ###lastday:2013-04-30 23:59:59

    转自

    http://hi.baidu.com/zzm_2007/item/3b967b1cd1586e4e2b3e2258

    展开全文
  • java获取系统时间存在时差

    千次阅读 2013-09-13 18:43:25
    发布的项目使用64位JDK,Java...设置JVM的默认时区为东八区(北京时间) 在下面四个目录: Java\jre6\lib\zi\Etc Java\jre6\lib\zi Java\jdk1.6.0_18\jre\lib\zi\Etc Java\jdk1.6.0_18\jre\lib\zi  引用下找到
    发布的项目使用64位JDK,Java获取的时间总比正常的时候慢8小时,但服务器的时间及时区都是正确的,解决方法:
    设置JVM的默认时区为东八区(北京时间)


    在下面四个目录:
    Java\jre6\lib\zi\Etc
    Java\jre6\lib\zi
    Java\jdk1.6.0_18\jre\lib\zi\Etc
    Java\jdk1.6.0_18\jre\lib\zi 
    引用下找到GMT文件备份一下,然后复制一份GMT-8并重命名为GMT
    ,复制完毕,重新运行一下java程序问题即可解决!
     
    如果系统时间显示不对,可以通过
     

    1、找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai

    用这个文件替换当前的/etc/localtime文件。

    或者找你认为是标准时间的服务器,然后

    #scp root@xxx.xxx.xxx.xxx:/etc/localtime /etc/localtime

    2>

    修改/etc/sysconfig/clock文件,修改为:

    ZONE="Asia/Shanghai"

    UTC=false

    ARC=false

    展开全文
  • 一、在取日期以前设置一下时区...此种方法适用于单次快速获取系统本地时间二、设置java命令参数java -Duser.timezone=Asia/Jerusalem DateTest三、设置JVM的默认时区为东八区(北京时间)在下 面四个目录(bea\jdk1...
  • Java Calendar获取年、月、日、时间

    千次阅读 2017-07-11 18:52:21
    Java Calendar获取年、月、日、时间  Calendar c = Calendar.getInstance(TimeZone... //获取东八区时间  int year = c.get(Calendar.YEAR); //获取年  int month = c.get(Calendar.MONTH) + 1; 
  • java获取指定时区的时间

    千次阅读 2018-05-04 11:29:04
    都需要统一,尤其是用户下单之类的,涉及到订单15分钟超时失效问题,所以就更应该统一,目前我们是都统一成东八区北京时间,具体代码如下,如果哪位大神发现代码有问题,请留言指教import java.text....
  • Java获取时间与系统时间相差8小时的解决方法 发布的项目Java获取时间...设置JVM的默认时区为东八区(北京时间) 在下面四个目录(Java\jre6\lib\zi\Etc、Java\jre6\lib\zi、Java\jdk1.6.0_18\jre\lib\zi\Et...
  • 8.Java Calendar获取年、月、日、时间

    千次阅读 2018-07-31 10:23:19
    Java Calendar获取年、月、日、时间  Calendar c = Calendar.getInstance(Time... //获取东八区时间  int year = c.get(Calendar.YEAR); //获取年  int month = c.get(Calendar.MONTH) + 1; //...
  • 转自:https://www.cnblogs.com/longYou/p/6382399.htmlCalendar c = Calendar.getInstance(TimeZone.getTimeZone("... //获取东八区时间 //获取年 int year = c.get(Calendar.YEAR); //获取...
  • 作者 | 曹建责编 | 屠敏出品 | CSDN(ID:CSDNnews...我们生活中采用的时间是东八区时间, 东八区(UTC / GMT+08:00)是比世界协调时间(UTC)/ 格林尼治标准时间(GMT)快8小时的时区,理论上的位置是位于东经112.5度至127...

空空如也

空空如也

1 2 3 4 5 6
收藏数 107
精华内容 42
关键字:

获取东八区时间java

java 订阅