1.Date对象
Date类在java.util包中。使用Date类的无参数构造方法创建的对象可以获取本地当前时间。
用Date的构造方法Date(long time)创建的Date对象表 示相对1970年1月1日0点(GMT)的时间,
例如参数 time取值60*60*1000秒表示Thu Jan 01 01:00:00 GMT 1970。
可以用System类的静态方法 public longcurrentTimeMillis()获取系统当前时间,这个时间是从1970.年1月1日0点(GMT)到目前时刻所走过的毫秒数(这是一个不小的数)。可以根据currentTimeMillis()方法得到的数字,用Date的构造方法Date(long time)来创建一个本地日期的Date对象。
2.格式化时间
Date对象表示时间的默认顺序是:星期、月、日、小时、分、秒、年。例如:
Sat Apr 28 21:59:38 CST 2001。
我们可能希望按着某种习惯来输出时间,比如时间的序 :年 月 星期 日或年 月 星期 日 小时 分 秒。
这时可以使用DateFormat的子类SimpleDateFormat来实现日期的格式化。SimpleDateFormat有一个常用构造方法:
public SimpleDateFormat(String pattern)。
该构造方法可以用参数pattern指定的格式创建一个对 象,该对象调用:
format(Date date)方法格式化时间对象date。
需要注意的是,pattern中应当含有一些有效的字符序列。例如:
ly或yy 表示用2位数字输出年份;
yyyy 表示用4位数字输出年份。
lM 或MM 表示用2为数字或文本输出月份,如果想用汉字输出月份,pattern中应连续包含至少3个M,如:MMM。
ld 或dd 表示用2位数字输出日。
lH或HH 表示用两位数字输出小时。
lm或mm 表示用两位数字输出分。
ls或ss 表示用两位数字输出秒。
l E 表示用字符串输出星期。
3.Calendar类
Calendar类在java.util包中。使用Calendar类的static方法getInstance()可以初始化一个日历对象,如:
Calendar calendar= Calendar.getInstance();
然后,calendar对象可以调用方法:
public final void set(int year,int month,int date)
public final void set(int year,int month,int date,int hour,int minute)
public final void set(int year,int month, int date, int hour, int minute,int second)
将日历翻到任何一个时间,当参数year取负数时表示公元前。
calendar对象调用方法:
public int get(int field)
可以获取有关年份、月份、小时、星期等信息,参数field的有效值由Calendar的静态常量指定,例如:
calendar.get(Calendar.MONTH);
返回一个整数,如果该整数是0表示当前日历是在一月,该整数是1表示当前日历是在二月等。
日历对象调用
public long getTimeInMillis()
可以将时间表示为毫秒。
2.实现日期对话框,点击左侧日期,出现弹出框选择日期,右侧同理可得
activity_main.xml不变
添加以下代码即可
dtLeft.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final Calendar cd = Calendar.getInstance();
Date date = new Date();
cd.setTime(date);
DatePickerDialog dp = new DatePickerDialog(MainActivity.this,
new OnDateSetListener() {
boolean left = false;
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
if (left == true) {
return;
} else {
left = true;
String dateStr = year + "-"
+ adjustMonthDay(monthOfYear + 1)
+ "-" + adjustMonthDay(dayOfMonth);
dateLeft = dateStr;
dtLeft.setText("从" + dateLeft);
}
}
}, cd.get(Calendar.YEAR), cd.get(Calendar.MONTH), cd
.get(Calendar.DAY_OF_MONTH));
dp.show();
}
});
}
public static String adjustMonthDay(int number) {
if (number < 10) {
return "0" + number;
}
return "" + number;
}
3.实现点击左侧箭头图标,日期变为向前一天,在原代码中添加以下代码,右侧同理,变为+1即可
btLeft.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
Date oldDate = df.parse(dateLeft);
Calendar calendar = Calendar.getInstance();
calendar.setTime(oldDate);
calendar.add(Calendar.DATE, -1);
dateLeft = df.format(calendar.getTime());
dtLeft.setText("从" + dateLeft);
} catch (ParseException e) {
e.printStackTrace();
}
}
});