前言
关于日期和时间的操作,如果使用jdk8以下的jdk可以参考本文,本文涵盖了Calendar的常见操作。
如果你使用的是jdk8或者jdk8以上的版本推荐使用LocalDate、LocalTime、LocalDateTime来处理日期和时间,
可参考我另一篇文章:
java优雅的处理日期时间,LocalDate、LocalTime、LocalDateTime使用
获取当前日期和时间
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Maintest {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowTime = format.format(c.getTime());
System.out.println("今天的日期: " + nowTime);
}
}
输出:
今天的日期: 2021-07-01 15:04:48
获取年、月、日、时、分、秒、本月最小最大天数
import java.util.Calendar;
public class Maintest {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
//获取年
int year = c.get(Calendar.YEAR);
//获取月份,0表示1月份
int month = c.get(Calendar.MONTH) + 1;
//获取当前天数
int day = c.get(Calendar.DAY_OF_MONTH);
//获取当前小时
int time = c.get(Calendar.HOUR_OF_DAY);
//获取当前分钟
int min = c.get(Calendar.MINUTE);
//获取当前秒
int sec = c.get(Calendar.SECOND);
//星期 (1-7分别代表: 星期日,星期一,星期二,星期三,星期四,星期五,星期六)
int week = c.get(Calendar.DAY_OF_WEEK);
//获取本月最小天数
int first = c.getActualMinimum(Calendar.DAY_OF_MONTH);
//获取本月最大天数
int last = c.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("年: " + year);
System.out.println("月: " + month);
System.out.println("日: " + day);
System.out.println("时: " + time);
System.out.println("分: " + min);
System.out.println("秒: " + sec);
System.out.println("星期: " + week);
System.out.println("本月最小天数: " + first);
System.out.println("本月最大天数: " + last);
}
}
输出:
年: 2021
月: 7
日: 1
时: 15
分: 18
秒: 15
星期: 5
本月最小天数: 1
本月最大天数: 31
字符串与Calendar时间的互换
1.字符串转Calendar时间
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Maintest {
public static void main(String[] args) {
try {
//"2021-06-07 08:07:36"字符串转换为Calendar
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse("2021-06-07 08:07:36");
Calendar c = Calendar.getInstance();
c.setTime(date);
//测试,获取月份
int month = c.get(Calendar.MONTH) + 1;
System.out.println("月: " + month);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
输出:
月: 6
2.Calendar时间字转字符串
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Maintest {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowTime = format.format(c.getTime());
System.out.println("今天的日期: " + nowTime);
}
}
设置指定的日期时间
除了上面的通过字符串来设置还可以通过:
方法一:
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Maintest {
public static void main(String[] args) {
// 设置指定日期,月份需要减一。(比如:如果想设置为6月,则月份需要设为5月)
Calendar c = Calendar.getInstance();
c.set(2021, 5, 1,8,6,39);
//测试,输出
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowTime = format.format(c.getTime());
System.out.println("设置的日期: " + nowTime);
}
}
输出:
设置的日期: 2021-06-01 08:06:39
方法二:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Maintest {
public static void main(String[] args) {
// 设置指定日期,月份需要减一。(比如:如果想设置为6月,则月份需要设为5月)
Calendar c = new GregorianCalendar(2016, 5, 1, 5, 41, 22);
//测试,输出
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowTime = format.format(c.getTime());
System.out.println("设置的日期: " + nowTime);
}
}
输出:
设置的日期: 2016-06-01 05:41:22
日期时间的加减
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Maintest {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowTime = format.format(c.getTime());
System.out.println("当前时间: " + nowTime);
c.add(Calendar.HOUR_OF_DAY, 1);//增加1小时
//c.add(Calendar.DAY_OF_MONTH, 1);//增加1天
//c.add(Calendar.MONTH, 1);//增加1个月
//c.add(Calendar.YEAR, 1);//增加1年
//c.add(Calendar.DAY_OF_MONTH, -2);//减少2天
//c.add(Calendar.YEAR, -2);//减少2年
nowTime = format.format(c.getTime());
System.out.println("增加1小时: " + nowTime);
}
}
输出:
当前时间: 2021-07-01 16:32:12
增加1小时: 2021-06-29 17:32:12
日期时间的比较
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Maintest {
public static void main(String[] args) {
Calendar c1 = new GregorianCalendar(2021, 6, 1, 5, 41, 22);
Calendar c2 = new GregorianCalendar(2021, 6, 2, 5, 41, 22);
//0则相等,c1早于c2则返回-1,大于则返回1
int result = c1.compareTo(c2);
if (result > 0) {
System.out.println("c1比c2晚");
} else if(result < 0) {
System.out.println("c1比c2早");
}else if(result == 0){
System.out.println("c1和c2一样");
}
}
}
输出:
c1比c2早
计算时间差
1.计算相差几天
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.concurrent.TimeUnit;
public class Maintest {
public static void main(String[] args) {
// 注意,月份需要减一。(比如:如果想设置为6月,则月份需要设为5月)
Calendar c1 = new GregorianCalendar(2021, 5, 1, 5, 41, 22);
Calendar c2 = new GregorianCalendar(2021, 4, 30, 9, 40, 36);
Date firstDate = c1.getTime();
Date secondDate = c2.getTime();
long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime());
long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
System.out.println("相差:" + diff + "天");
}
}
输出:
相差:1天
2.计算相差几分钟
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Maintest {
public static void main(String[] args) {
Calendar c1 = new GregorianCalendar(2021, 5, 1, 5, 41, 22);
Calendar c2 = new GregorianCalendar(2021, 5, 1, 6, 42, 22);
// 计算毫秒差值
long startCalendarTimeInMills = c1.getTimeInMillis();
long endCalendarTimeInMills = c2.getTimeInMillis();
long differenceInMills = endCalendarTimeInMills - startCalendarTimeInMills;
// 1秒 = 1000毫秒
long differenceInSecond = differenceInMills / 1000;
// 1分钟 = 60秒
long differenceInMinute = Math.abs(differenceInSecond / 60);
System.out.println("相差: " + differenceInMinute + " 分钟");
}
}
输出:
相差: 61 分钟
毫秒与时间格式的转换
1.毫秒转时间:
import java.text.SimpleDateFormat;
import java.util.*;
public class Maintest {
public static void main(String[] args) {
long millisecond = 1631203200000L;
Date date = new Date(millisecond);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("毫秒[1631203200000]对应日期时间字符串:" + format.format(date));
}
}
输出:
毫秒[1631203200000]对应日期时间字符串:2021-09-10
2.时间转毫秒:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Maintest {
public static void main(String[] args) {
String dateTime = "2021-09-02 12:30:45 123";
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").parse(dateTime));
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("日期[2021-09-02 12:30:45 123]对应毫秒:" +calendar.getTimeInMillis());
}
}
输出:
日期[2021-09-02 12:30:45 123]对应毫秒:1630557045123
关于时间差你还可以参考:
使用 Calendar 计算时间
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/80300.html