写在前面:
Java中的时间处理涉及到的常用包为java.util.Calendar、java.text.SimpleDateFormat、java.util.Date,主要涉及Calendar 类、Date类、SimpleDateFormat类中方法,相关 日期和时间模式的表示格式 如下所示:
特别注意:字母大小写表示的含义是不同。
- yyyy:年
- MM:月
- dd:日
- hh:12小时制,从1-12
- K:和hh类似也表示12小时制,但是是从0-11
- HH:24小时制,从0-24
- k:和HH类似也表示24小时制,但是是从1-24
- mm:分
- ss:秒
- S:毫秒
- E:星期几
- D:一年中第几天
- F:一月中第几个星期(该月经过的总天数 / 7 得到)
- W:一月中的第几星期(不涉及计算,根据实际情况输出)
- w:一年中第几个星期
- a:上午和下午标识(有a下午,无a上午)
- z:表示时区
1.获取年份、月份、第几天等
(1)代码如下
//导入
import java.util.Calendar;
//创建类
public class TimeTest {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();//创建Calendar对象
int year = cal.get(Calendar.YEAR);//年
int month = cal.get(Calendar.MONTH) + 1 ;//月
int day = cal.get(Calendar.DATE);//日
int weekDay = cal.get(Calendar.DAY_OF_WEEK);//一周的第几天
int monthDay = cal.get(Calendar.DAY_OF_MONTH);//一月中的第几天
int yearDay = cal.get(Calendar.DAY_OF_YEAR);//一年的第几天
System.out.println("当前时间(星期几、月、日、时间、形式、年): " + cal.getTime());
System.out.print("年: " + year +" ");
System.out.print("月: " + month + " ");
System.out.println("日: " + day + " ");
System.out.println("一周的第几天: " + weekDay);
System.out.println("一月中的第几天: " + monthDay);
System.out.println("一年的第几天: " + yearDay);
}
}
(2)运行结果
2.获取当前时间
(1)代码如下
//导入
import java.text.SimpleDateFormat;
import java.util.Date;
//创建类
public class TimeTest {
public static void main(String[] args) {
Date date = new Date();// 创建Date对象 date
SimpleDateFormat sdf = new SimpleDateFormat();//创建SimpleDateFormat对象
//以下:yyyy表示年、MM表示月、dd表示日、HH表示小时、mm表示分钟、ss表示秒、a标记上/下午
sdf.applyPattern("yyyy-MM-dd HH:mm:ss a");// 日期形式表达式
System.out.println("现在时间(年-月-日):" + sdf.format(date)); // 输出已经格式化的现在时间,传递对象date
sdf.applyPattern("MM-dd-yyyy HH:mm:ss a");// 日期形式表达式
System.out.println("现在时间(月-日-年):" + sdf.format(date)); // 输出已经格式化的现在时间,传递对象date
sdf.applyPattern("dd-MM-yyyy HH:mm:ss a");// 日期形式表达式
System.out.println("现在时间(日-月-年):" + sdf.format(date)); // 输出已经格式化的现在时间,传递对象date
}
}
(2)运行结果
3.格式化输出时间
(1)代码如下
//导入
import java.text.SimpleDateFormat;
import java.util.Date;
//创建类
public class TimeTest {
public static void main(String[] args) {
Date date = new Date();// 创建Date对象 date
// yyyy表示年、MM表示月、dd表示日、HH表示小时、mm表示分钟、ss表示秒、a标记上/下午
//也可使 time = "MM-dd-yyyy HH:mm:ss" 或 "dd-MM-yyyy HH:mm:ss" 格式,只是位置不同
String time = "yyyy-MM-dd HH:mm:ss";//定义字符串变量time记录格式化时间显示格式
SimpleDateFormat sdf = new SimpleDateFormat(time);//创建SimpleDateFormat对象,传递time格式
System.out.println("现在时间(年-月-日):" + sdf.format(date)); // 输出已经格式化的现在时间,传递对象date
}
}
(2)运行结果
4.将时间戳转换成时间
(1)代码如下
需要使用到 SimpleDateFormat 类中的 format() 方法将时间戳转换成时间。
//导入
import java.text.SimpleDateFormat;
import java.util.Date;
//创建类
public class TimeTest {
public static void main(String[] args) {
Long timeStamp = System.currentTimeMillis(); //获取当前时间戳
// yyyy表示年、MM表示月、dd表示日、HH表示小时、mm表示分钟、ss表示秒、a标记上/下午
//形式一:
String time1 = "yyyy-MM-dd HH:mm:ss";//定义字符串变量time1记录格式化时间显示格式
SimpleDateFormat sdf1=new SimpleDateFormat(time1);//创建SimpleDateFormat对象sdf1,传递time1格式
String sd = sdf1.format(new Date(Long.parseLong(String.valueOf(timeStamp))));//将时间戳转换成时间
System.out.println("当前时间格式化结果:" + sd);
//形式二:
String time2 = "yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒";//定义字符串变量time2记录格式化时间显示格式
SimpleDateFormat sdf2 = new SimpleDateFormat(time2); //创建SimpleDateFormat对象sdf2,传递time2格式
String sd2 = sdf2.format(new Date(Long.parseLong(String.valueOf(timeStamp))));//将时间戳转换成时间
System.out.println("当前时间格式化结果:" + sd2);
//两种形式区别在于表示形式不同,方法相同
}
}
(2)运行结果