从零开始学java - 第六天

138 阅读3分钟

这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战

今天继续~

日期和时间的格式化编码

d - 月

h - 小时(12,A.M/P.M)

H - 小时(24)

m - 分钟

s - 秒数

S - 毫秒数

E - 星期

D - 天(365)

F - 一个月中的第几周的周几

w - 一年中的第几周

W - 一个月中的第几周

a - A.M/P.M标记

k - 小时

K - A.M/P.M

z - 时区

' - 文字定界符

" - 单引号

printf格式化日期

c - 包括全部日期和时间信息

F - "年-月-日"

D - "月-日-年"

r - "HH:MM:SS PM"格式(12)

T - "HH:MM:SS"格式(24)

R - "HH:MM"格式(24)

public static void main(String[] args) { 
Date date = new Date(); 
System.out.printf("全部日期和时间信息:%tc%n",date); 
//f的使用 
System.out.printf("年-月-日格式:%tF%n",date);
//d的使用 
System.out.printf("月/日/年格式:%tD%n",date); 
//r的使用 
System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);
//t的使用 
System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);
//R的使用 
System.out.printf("HH:MM格式(24时制):%tR",date); }

ps:%tx-时间类型 %n-换行用

将字符串解析为时间

  • 运用SimpleDateFormat的parse方法来将字符串转化为时间
public static void main(String[] args) {
    SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 
    String input = args.length == 0 ? "1818-11-11" : args[0];
    System.out.print(input + " Parses as ");
    Date t; 
    try { 
        t = ft.parse(input); 
        System.out.println(t);
    } 
        catch (ParseException e) {
        System.out.println("Unparseable using " + ft);
    }
}

休眠(sleep)

  • 使当前线程停止一段时间,将空间放出来供其他线程使用
Thread.sleep(1000*3); // 休眠3秒

测量时间

public static void main(String[] args) {
    long start = System.currentTimeMillis( ); 
    System.out.println(new Date( ) + "\n");
    Thread.sleep(5*60*10);
    System.out.println(new Date( ) + "\n");
    long end = System.currentTimeMillis( );
    long diff = end - start; 
    System.out.println("Difference is : " + diff);
}

ps:System.currentTimeMillis - new Date()就是调用了此方法,具体用处为获取时间,上述代码就是获取开始时间,休眠,获取结束时间,最后获取二者之间的间隔

Calendar类

创建

Calendar c = Calendar.getInstance();// 默认是当前日期
//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);// 设置指定日期

Calendar.YEAR - 年份

Calendar.MONTH - 月份

Calendar.DATE - 日期

Calendar.DAY_OF_MONTH - 日期

Calendar.HOUR - 小时(12)

Calendar.HOUR_OF_DAY - 小时(24)

Calendar.MINUTE - 分钟

Calendar.SECOND - 秒

Calendar.DAY_OF_WEEK - 星期几

public void set(int field,int value) - 设置时间(字段,值)

c1.set(Calendar.DATE,10);

添加时间

c1.add(Calendar.DATE, 10);

获取时间

int year = c1.get(Calendar.YEAR);

GregorianCalendar类

  • Calendar类的具体实现

void add(int field, int amount) - 将指定的时间添加到指定的时间字段当中

protected void computeFields() - 转换毫秒值为时间域值(时间戳转换)

protected void computeTime() - 转换时间域值为毫秒值(时间戳转换)

boolean equals(Object obj) - 将对象与时间比较

int get(int field) - 获取时间值

int getActualMaximum(int field) - 返回当前指定时间的最大值

int getActualMinimum(int field) - 返回当前指定时间的最小值

int getGreatestMinimum(int field) - 返回此 GregorianCalendar 实例给定日历字段的最高的最小值

Date getGregorianChange() - 获得格里高利历的更改日期

int getLeastMaximum(int field) - 返回此 GregorianCalendar 实例给定日历字段的最低的最大值

int getMaximum(int field) - 返回此 GregorianCalendar 实例的给定日历字段的最大值

Date getTime() - 获取当前时间

long getTimeInMillis() - 获取用长整型表示的日历的当前时间

TimeZone getTimeZone() - 获取时区

int getMinimum(int field) - 返回给定字段的最小值

int hashCode() - 重写hashCode

boolean isLeapYear(int year) - 确认给定年份是否是闰年

void roll(int field, boolean up) - 在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段

void set(int field, int value) - 设置时间字段

void set(int year, int month, int date) - 设置年月日的值

void setGregorianChange(Date date) - 设置 GregorianCalendar 的更改日期

void setTime(Date date) - 用给定的日期设置Calendar的当前时间

void setTimeInMillis(long millis) - 用给定的long型毫秒数设置Calendar的当前时间

void setTimeZone(TimeZone value - 将时区设置成给定的时区

String toString() - 返回字符串

今天就学到这,晚安~