一、Date

  • 创建日期对象
    1)指定时间创建日期对象
Date d = new Date(123456789);
System.out.println(d);

运行结果:

java修改服务器时间 java时间设置_字符串


2)创建当前时间的日期对象

Date d = new Date();
System.out.println(d);

其效果等同于:

Date d = new Date(System.currentTimeMillis());
System.out.println(d);

运行结果:

java修改服务器时间 java时间设置_字符串_02

  • 获取时间的毫秒值
Date d = new Date();
long time = d.getTime();
System.out.println(time);

运行结果:

java修改服务器时间 java时间设置_字符串_03

  • 设置时间
    可以通过上述构造方法设置,这里我们通过setTime()方法设置
Date d = new Date();
d.setTime(1554902134466L);
System.out.println(d);

运行结果:

java修改服务器时间 java时间设置_字段_04

二、SimpleDateFormat

上述Date输出的结果确实能表示时间,但是这个时间不符合我们平时使用时间的格式,所以我们可以使用SimpleDateFormat来指定时间的格式,更有利于国际化

日期模式字符:

这里只列出常用的模式字母
年 y
月 M	
日 d
时 H
分 m
秒 s
  • 日期 ---> 字符串
Date d = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String timeStr = format.format(d);
System.out.println(timeStr);

运行结果:

java修改服务器时间 java时间设置_字段_05

  • 字符串 ---> 日期
String timeStr ="2019年04月10日 21:31:10";
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date date = format.parse(timeStr);
System.out.println(date);

运行结果:

java修改服务器时间 java时间设置_字段_06

三、Calendar

Calendar为我们操控日历提供了非常方便的方法,下面我们挑选一些常用的进行演示

  • 获取年月日(get)
// 获取日历实例
Calendar calendar = Calendar.getInstance();
		
// 获取年
int year = calendar.get(Calendar.YEAR);
// 获取月
int month = calendar.get(Calendar.MONTH);
// 获取日(月份中的天)
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+(month+1)+"月"+day+"日");

运行结果:

java修改服务器时间 java时间设置_字符串_07


注意:获取日期中的字段是要用的是get方法,其中参数均为int类型,Calendar类的字段已经在类中封装好了。获取月份的时候,月份是从 0 开始的,所以若要显示出我们平时使用的月份,需要将获取的月份进行加 1

  • 修改日历(add)
    获取三年前的今天:
// 获取日历实例
Calendar calendar = Calendar.getInstance();

// 获取年
int year = calendar.get(Calendar.YEAR);
// 获取月
int month = calendar.get(Calendar.MONTH);
// 获取日(月份中的天)
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + (month + 1) + "月" + day + "日");

// 年份 -3
calendar.add(Calendar.YEAR, -3);
// 获取年
year = calendar.get(Calendar.YEAR);
// 获取月
month = calendar.get(Calendar.MONTH);
// 获取日(月份中的天)
day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + (month + 1) + "月" + day + "日");

运行结果:

java修改服务器时间 java时间设置_字符串_08


获取十年后的两个月前的十天后:

// 获取日历实例
Calendar calendar = Calendar.getInstance();

// 获取年
int year = calendar.get(Calendar.YEAR);
// 获取月
int month = calendar.get(Calendar.MONTH);
// 获取日(月份中的天)
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + (month + 1) + "月" + day + "日");

// 年份 +10
calendar.add(Calendar.YEAR, +10);
// 月份 -2
calendar.add(Calendar.MONTH, -2);
// 天 +10
calendar.add(Calendar.DAY_OF_MONTH, +10);

// 获取年
year = calendar.get(Calendar.YEAR);
// 获取月
month = calendar.get(Calendar.MONTH);
// 获取日(月份中的天)
day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + (month + 1) + "月" + day + "日");

运行结果:

java修改服务器时间 java时间设置_字符串_09

  • 设置日期(set)
// 获取日历实例
Calendar calendar = Calendar.getInstance();

// 设置日历
calendar.set(2020, 3, 1);

// 获取年
int year = calendar.get(Calendar.YEAR);
// 获取月
int month = calendar.get(Calendar.MONTH);
// 获取日(月份中的天)
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + (month + 1) + "月" + day + "日");

运行结果:

java修改服务器时间 java时间设置_System_10

  • 获取任意一年中的二月有多少天
    我们可以用通过判断闰年来解决,这里不做演示。此处只演示使用Calendar来解决,会比判断闰年的方式更加简单
    想要得到任意一年中的二月有多少天,我们可以这么思考。先得到这一年中的3月1日,然后向上推一天,然后获取月中的天即可。
    注意:设置3月1日时,月份应为2,而不是3
// 获取日历实例
Calendar calendar = Calendar.getInstance();
// 设置年份
int year = 2019;
// 设置日历为3月1日,注意:3月为数字2,而不是3
calendar.set(year, 2, 1);
// 3月1日向前推一天
calendar.add(Calendar.DAY_OF_MONTH, -1);
// 获取二月最后一天
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年二月有" + day + "天");

运行结果:

java修改服务器时间 java时间设置_字符串_11


java修改服务器时间 java时间设置_System_12


java修改服务器时间 java时间设置_字段_13


java修改服务器时间 java时间设置_字段_14