在平时的coding工作中,我们经常会遇见对时间、日期的处理。现对我使用的处理方式做一个记录。
1、对calender与GregorianCalendar的应用
2、时间是用距离一个固定时间点的毫秒数(可正可负)表示的,这个点就是纪元(epoch)
3、 Date类的纪元是UTC时间1997年1月1日00:00:00.UTC是Coordinated Universal Time的缩写
4、 Date类表示时间点,GregorianCalendar表示日历
5、GregorianCalendar遵循了世界上大多数地区采用的Gregorian阳历表示法
6、 在GregorianCalendar中月份从0开始计数,因此11月表示12月,一般使用常量来表示
下面是测试用到的两个事例:
package ObjectAndClass;
import java.util.*;
public class CalendarTest {
public static void main(String[] args) {
// construct d as current date
GregorianCalendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);
int hour = d.get(Calendar.HOUR_OF_DAY);
//set d to start date of month
d.set(Calendar.DAY_OF_MONTH, 1);
int weekday = d.get(Calendar.DAY_OF_WEEK);
//print heading
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
//indent first line of calender
for(int i=Calendar.SUNDAY;i<weekday;i++)
System.out.print(" ");
do
{
//print day
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
//mark current day with *
if(day == today)
System.out.print("*");
else
System.out.print(" ");
//start a new line after every Saturday
if(weekday == Calendar.SATURDAY)
System.out.println();
//advance d to the next day
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
while (d.get(Calendar.MONTH) == month);
//the loop exits when d is day 1 of the next month
//print final end of line if necessary
if(weekday != Calendar.SUNDAY)
System.out.println();
}
}
来源于核心技术基础卷
package ObjectAndClass;
import java.util.*;
import java.text.*;
public class DateTest {
/**
* @param args
* 对date类型进行测试
*/
public static void main(String[] args) {
Date now = new Date();
//date类型的tostring 重载了
System.out.println(now.toString());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String test = sdf.format(now).toString();
System.out.println(test);
String myString = DateFormat.getDateInstance().format(now);
System.out.println(test);
}
}
对GregorianCalendar、Date的用法请查阅jdk。
1、对calender与GregorianCalendar的应用
2、时间是用距离一个固定时间点的毫秒数(可正可负)表示的,这个点就是纪元(epoch)
3、 Date类的纪元是UTC时间1997年1月1日00:00:00.UTC是Coordinated Universal Time的缩写
4、 Date类表示时间点,GregorianCalendar表示日历
5、GregorianCalendar遵循了世界上大多数地区采用的Gregorian阳历表示法
6、 在GregorianCalendar中月份从0开始计数,因此11月表示12月,一般使用常量来表示
下面是测试用到的两个事例:
package ObjectAndClass;
import java.util.*;
public class CalendarTest {
public static void main(String[] args) {
// construct d as current date
GregorianCalendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);
int hour = d.get(Calendar.HOUR_OF_DAY);
//set d to start date of month
d.set(Calendar.DAY_OF_MONTH, 1);
int weekday = d.get(Calendar.DAY_OF_WEEK);
//print heading
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
//indent first line of calender
for(int i=Calendar.SUNDAY;i<weekday;i++)
System.out.print(" ");
do
{
//print day
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
//mark current day with *
if(day == today)
System.out.print("*");
else
System.out.print(" ");
//start a new line after every Saturday
if(weekday == Calendar.SATURDAY)
System.out.println();
//advance d to the next day
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
while (d.get(Calendar.MONTH) == month);
//the loop exits when d is day 1 of the next month
//print final end of line if necessary
if(weekday != Calendar.SUNDAY)
System.out.println();
}
}
来源于核心技术基础卷
package ObjectAndClass;
import java.util.*;
import java.text.*;
public class DateTest {
/**
* @param args
* 对date类型进行测试
*/
public static void main(String[] args) {
Date now = new Date();
//date类型的tostring 重载了
System.out.println(now.toString());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String test = sdf.format(now).toString();
System.out.println(test);
String myString = DateFormat.getDateInstance().format(now);
System.out.println(test);
}
}
对GregorianCalendar、Date的用法请查阅jdk。