创建特定日期
虽然Java日期和时间类具有多个构造函数,但我们会注意到大多数已弃用。
直接创建日期实例的唯一可接受方式是通过使用空构造函数或者长期传递(自标准基础时间以来的毫秒数)。
除非我们正在寻找当前日期,否则既不易于使用另一个日期实例。
要创建新日期,我们将需要一个日历实例。
从那里,我们可以将日历实例设置为我们需要的日期。
Calendar c = Calendar.getInstance();
这将返回到当前时间的新日历实例。
日历具有许多方法,可以在日期和时间突变或者彻底设置。
在这种情况下,我们将将其设置为特定日期。
c.set(1974, 6, 2, 8, 0, 0); Date d = c.getTime();
GetTime方法返回我们需要的日期实例。
请记住,日历集方法仅设置一个或者多个字段,它们不会设置所有字段。
也就是说,如果我们设置了该年,则其他字段保持不变。
在许多情况下,这个代码片段履行其目的,但请记住,未定义日期/时间的两个重要部分。
- (1974,6,2,8,0,0)参数在默认时区内解释,定义为其他位置,
- 毫秒不设置为零,但在创建日历实例时从系统时钟填充。
将日期转换为某个字符串格式
来自SimpleDateFormat类的格式()有助于使用提供的模式字符串将日期对象转换为某些格式字符串对象。
Date today = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yy"); //pattern is specified here System.out.println(dateFormat.format(today)); //25-Feb-16
Patterns can be applied again by using applyPattern() dateFormat.applyPattern("dd-MM-yyyy"); System.out.println(dateFormat.format(today)); //25-02-2014
dateFormat.applyPattern("dd-MM-yyyy HH:mm:ss E"); System.out.println(dateFormat.format(today)); //25-02-2014 06:14:33 Thu
注意:这里mm(小字母m)表示分钟和mm(大写m)表示月份。
格式化年度时要注意:资本“Y”(Y)表示“年内的一周”,而小写“Y”(Y)表示这一年度。
当地时间
只使用日期的时间部分使用lumaltime。
我们可以以几种方式实例化本地对象
- localtime time = localtime.now();
- time = localtime.midnight;
- time = localtime.noon;
- time = localtime.of(12,12,45);
LumpyTime还具有内置的ToString方法,非常好地显示格式。
System.out.println(time);
我们还可以从LumbyTime对象中获取,添加和减去小时,分钟,秒和纳秒。
time.plusMinutes(1); time.getMinutes(); time.minusMinutes(1);
我们可以使用以下代码将其转换为日期对象:
LocalTime lTime = LocalTime.now(); Instant instant = lTime.atDate(LocalDate.of(A_YEAR, A_MONTH, A_DAY)). atZone(ZoneId.systemDefault()).toInstant(); Date time = Date.from(instant);
此类在计时器类中非常好地工作以模拟闹钟。
将格式化的字符串表示为日期对象的日期
此方法可用于将日期的格式化字符串表示转换为日期对象。
/** * Parses the date using the given format. * @param formattedDate the formatted date string * @param dateFormat the date format which was used to create the string. * @return the date */ public static Date parseDate(String formattedDate, String dateFormat) { Date date = null; SimpleDateFormat objDf = new SimpleDateFormat(dateFormat); try { date = objDf.parse(formattedDate); } catch (ParseException e) { //Do what ever needs to be done with exception. } return date; }
创建日期对象
Date date = new Date(); System.out.println(date); //Thu Nov 25 05:03:59 IST 2014
此处此日期对象包含创建此对象时的当前日期和时间。
Calendar calendar = Calendar.getInstance(); calendar.set(90, Calendar.DECEMBER, 11); Date myBirthDate = calendar.getTime(); System.out.println(myBirthDate); //Mon Dec 31 00:00:00 IST 1990
由于使用数据构造函数的使用,可以通过日历实例最佳创建日期对象,因为不推荐使用数据构造函数并令人沮丧。
要做的是,我们需要从工厂方法获取日历类的实例。
然后,我们可以使用数字或者在几个月的常量提供py的日历类的情况下设置年,月份和日期,以提高可读性并减少错误。
calendar.set(90, Calendar.DECEMBER, 11, 8, 32, 35); Date myBirthDatenTime = calendar.getTime(); System.out.println(myBirthDatenTime); //Mon Dec 31 08:32:35 IST 1990
随着日期,我们还可以按一小时,分钟和秒的顺序传递时间。