Java操作日期主要使用Date类,Calendar类,SimpleDateFormat类
1.Date类(java.util.Date包下而非java.sql.Date包)
代码:
Date date = new Date();
Log.d("TAG","当前日期----:"+date);
结果:
当前日期----:Thu Jun 21 17:01:37 GMT+08:00 2018
2.Calendar类(java.util包下而非android.icu.util包)
代码:
Calendar calendar = Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;//[0,11],所以要加1
int day=calendar.get(Calendar.DAY_OF_MONTH);
int hour=calendar.get(Calendar.HOUR_OF_DAY);
int minute=calendar.get(Calendar.MINUTE);
int second=calendar.get(Calendar.SECOND);
String result="当前日期----:"+year+"年"+month+"月"+day+"日 "+hour+":"+minute+":"+second;
Log.d("TAG",result);
final char[] week = {'日', '一', '二', '三', '四', '五', '六'};
int week_num = calendar.get(Calendar.DAY_OF_WEEK) - 1;
Log.d("TAG","今天是星期" + week[week_num]);
calendar .setTimeInMillis(l);//可手动添加时间戳显示指定时间戳
结果:
当前日期----:2018年6月21日 17:12:4
今天是星期四
3.Date类+SimpleDateFormat类(java.text包下而非android.icu.text包)
代码:
Date mdate = new Date();
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result1=simpleDateFormat1.format(mdate);
Log.d("TAG","result1----:"+result1);
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String result2=simpleDateFormat2.format(mdate);
Log.d("TAG","result2----:"+result2);
SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy-MM-dd");
String result3=simpleDateFormat3.format(mdate);
Log.d("TAG","result3----:"+result3);
SimpleDateFormat simpleDateFormat4 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String result4=simpleDateFormat4.format(mdate);
Log.d("TAG","result4----:"+result4);
结果:
result1----:2018-06-21 17:18:14
result2----:2018-06-21 17:18
result3----:2018-06-21
result4----:2018/06/21 17:18:14
说明:
YYYY和yyyy效果是不一样的。
以2019年12月31日举例:
yyyy-MM-dd:2019-12-31
YYYY-MM-dd:2020-12-31
因为:
Y指的是Week year,表示的是这个周所属的年份;y 表示的才是我们日常使用的年份。
4.将毫秒转换成时间字符串
代码:
long currentTimeMillis=System.currentTimeMillis();
Date mdate = new Date(currentTimeMillis);
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result1=simpleDateFormat1.format(mdate);
Log.d("TAG","result1----:"+result1);
结果:
result1----:2018-06-21 18:02:24
5.将字符串转换成毫秒
代码:
String date = "2018-06-21 18:02:05";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
long time2 = simpleDateFormat.parse(date).getTime();
Log.d("TAG","time2----:"+time2);
} catch (ParseException e) {
e.printStackTrace();
}
结果:
time2----:1529575325000