一、有关时间日期的几个问题
- UTC/UT
世界标准时间 GMT
格林尼治时间
How to get the current time
System.currentTimeMillis —– 返回当前时间点的毫秒表示,一般用于记录程序的运行时间
Date date = new Date();
Calendar calendar = Calendar.getInstance();
- How to format it
日期的转换使用DateForma抽象类的子类
SimpleDateFormat new SimpleDateFormat(“日期格式”) - How to convert a string to a date/time
方法一:
①、已知str=”2016,02,21”,
new SimpleDateFormat(“yyyy,MM,dd”) ———创建要解析字符串为日期的格式
②、sdf.parse(str) —–返回字符串对应的Date,SimpleDateFormat除了格式化Date为字符串外,还能把字符串按格式解析为Date
方法二
①、先将字符串转为
②、调用Timestamp t =
new Timestamp().valueOf(str);
- How to process the date/time with database
用java.util.Date的三个子类java.sql.Date/
java.sql.Time/java.sql.Timestamp处理
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));
int year = c.get(Calendar.year);
int month = c.get(Calendar.month)+1
int day = c.get(Calendar.DAY_OF_MONTH);
int first = c.getActualMinimum(c.DAY_OF_MONTH);
int last = c.getActualMaximum(c.DAY_OF_MONTH);
int time = c.get(Calendar.HOUR_OF_DAY);
int min = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String curDate = s.format(c.getTime());
二、与时间日期处理有关的类
Date类
java.util.Date的API简介
The class Date represents a specific instant in time, with millisecond precision
它提供了很多方法,但是有些已经废弃,不再使用了,具体可以查看API文档。
下面看一个Date类的实例:
public class TestDate{public static void main(String[] args){TestDate testdate = new TestDate();testdate.getSystemCurrentTime();testdate.getCurrentDate();}public void getSystemCurrentTime(){System.out.println("---获取系统当前时间---");System.out.println(System.currentTimeMils());}public void getCurrentDate(){System.out.println("---获取系统当前时间---");Date date = new Date();System.out.println("现在的日期是="+date.toString());System.out.println("自1970年1月1日0时0分0秒开始至今所经历的毫秒数="+date.getTime());}
}
Calendar类
Calendar类API简介:
The Calendar class is an abstract class that provides methods for converting between a specific instant in time and a set of calendar fields such as YEAR, MONTH,
DAY_OF_MONTH,HOUR, and so on, and for manipulating the calendar fields, such as getting the date of the next week. An instant in time can be represented by a millisecond value that is an offset from the Epoch, January 1, 1970 00:00:00.000 GMT (Gregorian).
它可以完全取代Date和DateFormat的组合对日期格式的处理,并且对日期的加减操作也特别方便。
API简介:
DateFormat is an abstract class for date/time formatting subclasses which formats and parses dates or time in a language-independent manner. The date/time formatting subclass, such as SimpleDateFormat, allows for formatting (i.e., date -> text), parsing (text -> date), and normalization. The date is represented as a Date object or as the milliseconds since January 1, 1970, 00:00:00 GMT.
使用最多的是SimpleDateFormat,它提供了许多方法用来将Date对象转成指定风格式的字符串形式,可以将符合要求的日期格式字符串形式转换成Date对象。
三、实例
日期格式字符串到日期类对象
String datestr = new "2016年2月22日";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm")
Date date = sdf(datestr);
日期加减处理
//Calendar的add方法有两个参数,第一个指定加减的单位,第二个指定加减的数量
Calendar c = getCalendar()
c.add(Calendar.YEAR,-1)
c.add(Calendar.MINUTE,-30)
Date和Calendar的转换
Calendar c = getCalendar();
Date date = new Date(c.getTimeInMillis());
四、总结
JAVA中日期经常使用一下几个方面:
①、创建日期
②、日期格式化显示
③、日期的转换(主要是和字符串之间的相互转换)
④、日期中年、月、日、时、分、秒等获取
⑤、日期的大小比较,日期的加减