Java 中的日期和时间

如何取得年月日、小时分钟秒?(2017-11-19-wl)

  1. public class DateTimeTest{
  2.       public static void main(String[] args){
  3.            Calendar cal =Calendar.getInstance();
  4.            System.out.println(cal.get(Calendar.YEAR));
  5.            System.out.println(cal.get(Calendar.MONTH)); // 0 -11
  6.             System.out.println(cal.get(Calendar.DATE));
  7.             System.out.println(cal.get(Calendar.HOUR_OF_DAY));
  8.              System.out.println(cal.get(Calendar.MINUTE));
  9.              System.out.println(cal.get(Calendar.SECOND));
  10. // Java8
  11.              LocalDateTime dt =LocalDateTime.now();
  12.             System.out.println(dt.getYear());
  13.             System.out.println(dt.getMonthValue()); // 1 -12
  14.             System.out.println(dt.getDayOfMonth());
  15.              System.out.println(dt.getHour());
  16.              System.out.println(dt.getMinute());
  17.              System.out.println(dt.getSecond());
  18.        }
  19.              }

如何取得从 1970 1 1 0 0 0 秒到现在的毫秒数?(2017-11-19-wl)

  1. Calendar.getInstance().getTimeInMillis(); //第一种方式
  2. System.currentTimeMillis(); //第二种方式
  3. // Java8
  4. Clock.systemDefaultZone().millis();

如何取得某月的最后一天

​​​

  1. //获取当前月第一天:
  2. Calendar c =Calendar.getInstance();
  3. c.add(Calendar.MONTH,0);
  4. c.set(Calendar.DAY_OF_MONTH,1);//设置为 1号,当前日期既为本月第一天
  5. String first =format.format(c.getTime());
  6. System.out.println("===============first:"+first); 7.
  1. //获取当前月最后一天
  2. Calendar ca =Calendar.getInstance();
  3. ca.set(Calendar.DAY_OF_MONTH,ca.getActualMaximum(Calendar.DAY_OF_MONTH));
  4. String last =format.format(ca.getTime());
  5. System.out.println("===============last:"+last); 13.
  1. //Java8
  2. LocalDate today =LocalDate.now();
  3. //本月的第一天
  4. LocalDate firstday =LocalDate.of(today.getYear(),today.getMonth(),1);
  5. //本月的最后一天
  6. LocalDate lastDay=today.with(TemporalAdjusters.lastDayOfMonth());
  7. System.out.println("本月的第一天"+firstday);
  8. System.out.println("本月的最后一天"+lastDay);

如何格式化日期

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.now();
String date = localDate.format(dateTimeFormatter);
System.out.println("date:"+date);

补充:java的时间日期API一直以来都是被诟病的东西,为了解决这一问题,java8中引入了新的时间日期API,其中包括LocalDate,LocalTime,LocalDate,LocalDateTime,Clock,Instant等类,这些的类的设计都使用了不变模式,因此是线程安全的设计.

String fmt = "";譬如要format为yyyyMM-dd
fmt = "yyyyMM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(fmt);
Date date = ....;
String dateStr = sdf.format(date);

字母 日期或时间元素 表示 示例
G Era 标志符 Text AD
y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800

 

打印昨天的当前时刻

  1. importjava.util.Calendar;
  2. class YesterdayCurrent{
  3. public static void main(String[]args){
  4. Calendar cal =Calendar.getInstance();
  5. cal.add(Calendar.DATE,-1);
  6. System.out.println(cal.getTime());
  7.     }
  8. }

  9. //java-8
  10. importjava.time.LocalDateTime;
  11. class YesterdayCurrent{
  12. public static void main(String[] args){
  13. LocalDateTime today =LocalDateTime.now();
  14. LocalDateTime yesterday =today.minusDays(1);
  15. System.out.println(yesterday);
  16.  

  17.  

  18.      }

  19. }

解析和格式化

将一个日期格式转换为不同的格式,之后再解析一个字符串,得到日期时间对象,这些都是很常见的。我们来看一下简单的例子

package com.journaldev.java8.time; import java.time.Instant;

import java.time.LocalDate; import java.time.LocalDateTime;

import java.time.format.DateTimeFormatter;

 

public class DateParseFormatExample {

 

public static void main(String[] args){

 

//Format examples

LocalDate date = LocalDate.now();

//default format

System.out.println("Default format of LocalDate="+date);

//specific format System.out.println(date.format(DateTimeFormatter.ofPattern("d::MMM::uuuu"))); System.out.println(date.format(DateTimeFormatter.BASIC_ISO_DATE));

 

LocalDateTime dateTime = LocalDateTime.now();

//default format

System.out.println("Default format of LocalDateTime="+dateTime);

//specific format System.out.println(dateTime.format(DateTimeFormatter.ofPattern("d::MMM::uuuu HH::mm::ss")));

System.out.println(dateTime.format(DateTimeFormatter.BASIC_ISO_DATE));

 

Instant timestamp = Instant.now();

//default format

System.out.println("Default format of Instant="+timestamp);

 

//Parse examples

LocalDateTime dt = LocalDateTime.parse("27::Apr::2014 21::39::48", DateTimeFormatter.ofPattern("d::MMM::uuuu HH::mm::ss"));

System.out.println("Default format after parsing = "+dt);

}

}

输出:

Default format of LocalDate=2014-04-28

28::Apr::2014

20140428

Default format of LocalDateTime=2014-04-28T16:25:49.341 28::Apr::2014 16::25::49

20140428

Default format of Instant=2014-04-28T23:25:49.342Z Default format after parsing = 2014-04-27T21:39:48

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值