国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java日期類分析

Wuv1Up / 858人閱讀

摘要:用的時(shí)候再轉(zhuǎn)化成年月日時(shí)分秒。創(chuàng)建日期對(duì)象代表當(dāng)前時(shí)間從年月日早上點(diǎn)分秒開始經(jīng)歷了毫秒也就是秒的時(shí)間獲取一個(gè)時(shí)間的毫秒數(shù),返回一個(gè)型的整數(shù)。

時(shí)間原點(diǎn)概念

計(jì)算機(jī)語言中的時(shí)間原點(diǎn)都是從1970年1月1日8點(diǎn)0分0秒開始算的,就相當(dāng)于時(shí)間的0。
為什么對(duì)應(yīng)1970年呢?
其實(shí),現(xiàn)在大部分計(jì)算機(jī)系統(tǒng)使用的時(shí)間都是UNIX時(shí)間,而UNIX或類UNIX系統(tǒng)使用的時(shí)間表示方式是:從協(xié)調(diào)世界時(shí)1970年1月1日0時(shí)0分0秒起至現(xiàn)在的總秒數(shù),不包括閏秒。
為什么是8點(diǎn)?
因?yàn)橹袊奶窖髸r(shí)區(qū)是UTC-8,剛好和格林威治時(shí)間差8個(gè)小時(shí)。

時(shí)間是怎么計(jì)算的

Unix系統(tǒng)有一個(gè)時(shí)間戳(timestamp),這個(gè)時(shí)間戳是系統(tǒng)和程序用來計(jì)時(shí)的一個(gè)東西,表示從1970年1月1日(UTC/GMT的午夜)開始所經(jīng)過的秒數(shù),不考慮閏秒。用的時(shí)候再轉(zhuǎn)化成年月日時(shí)分秒。后來隨著UNIX的普及這個(gè)方法也被普及,很多后來出現(xiàn)的計(jì)算機(jī)都用這種方法記錄時(shí)間,java、數(shù)據(jù)庫、許多精密的儀器等也自然也遵循了這一約束。
意思就是所有的日期,都是以時(shí)間原點(diǎn)這個(gè)0點(diǎn)為基準(zhǔn),每過一毫秒,就+1,單位是毫秒。

創(chuàng)建日期對(duì)象
Date d1 = new Date();  //代表當(dāng)前時(shí)間
Date d2 = new Date(5000); //從1970年1月1日 早上8點(diǎn)0分0秒 開始經(jīng)歷了5000毫秒(也就是5秒)的時(shí)間
getTime

getTime() :獲取一個(gè)時(shí)間的毫秒數(shù),返回一個(gè)long型的整數(shù)。
例:

Date d1 = new Date();  //代表當(dāng)前時(shí)間
Long time = d1.getTime(); //當(dāng)前時(shí)間毫秒數(shù)
System.out.println("當(dāng)前時(shí)間:" + d1); //輸出結(jié)果為Thu May 17 11:57:49 CST 2018 表示現(xiàn)在是2018年5月17日11:57:49
System.out.println("當(dāng)前時(shí)間毫秒數(shù):" + time); //輸出結(jié)果為1526529469712 ,表示從1970年1月1日8點(diǎn)至現(xiàn)在經(jīng)過了1526529469712毫秒

還有一個(gè)方法與getTime的作用是一樣的 -> System.currentTimeMillis();

實(shí)例

下面通過一個(gè)實(shí)例來理解上面的概念:
借助隨機(jī)數(shù),創(chuàng)建一個(gè)從1995.1.1 00:00:00 到 1995.12.31 23:59:59 之間的隨機(jī)日期

//第一步,計(jì)算1995年的毫秒數(shù)
long second = 1000; //一秒為1000毫秒
long min = second * 60; //一分鐘
long hour = min * 60;//一小時(shí)
long day = hour * 24;//一天
long year = day * 365;//一年
long leapday = (1995-1970)/4 * day; //每隔四年就有一個(gè)閏日
long eightHour = 8 * hour; //1997年8點(diǎn)才是真正開始時(shí)間,所以要算1995年1月1日0點(diǎn)得減去8個(gè)小時(shí)
long _1995Start = year * (1995-1970) + leapday - eightHour; //1995年的毫秒數(shù)(從1970年算起)
System.out.println("1995年的第一天:" + new Date(_1995Start));
System.out.println("1995年的最后一天:" + new Date(_1995Start+year-1));
//第二步,定義一個(gè)隨機(jī)時(shí)間
long randomTime = (long)(Math.random() * (year-1) + _1995Start);
Date randomDate = new Date(randomTime);
System.out.println("1995年里的隨機(jī)一天:" + randomDate);

Date d1 = new Date();  //代表當(dāng)前時(shí)間
Long time = d1.getTime(); //從1970年1月1日 早上8點(diǎn)0分0秒 開始經(jīng)歷了5000毫秒(也就是5秒)的時(shí)間
System.out.println("當(dāng)前時(shí)間:" + d1);
System.out.println("當(dāng)前時(shí)間毫秒數(shù):" + time);

運(yùn)行結(jié)果:
1995年的第一天:Sun Jan 01 00:00:00 CST 1995
1995年的最后一天:Sun Dec 31 23:59:59 CST 1995
1995年里的隨機(jī)一天:Wed Sep 20 02:54:59 CST 1995

日期格式化

上面的例子直接打印對(duì)象,會(huì)看到 “Wed Sep 20 02:54:59 CST 1995” 這樣的格式,可讀性比較差,為了獲得“1995/9/20 02:54:59”這樣的格式,就要將日期進(jìn)行格式化。
y 代表年
M 代表月
d 代表日
H 代表24進(jìn)制的小時(shí)
h 代表12進(jìn)制的小時(shí)
m 代表分鐘
s 代表秒
S 代表毫秒

SimpleDateFormat 日期格式化類
format 日期轉(zhuǎn)字符串
parse 字符串轉(zhuǎn)日期

1.日期轉(zhuǎn)字符串

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );
Date d= new Date();
String str = sdf.format(d);
System.out.println("當(dāng)前時(shí)間通過 yyyy-MM-dd HH:mm:ss SSS 格式化后的輸出: "+str);

輸出結(jié)果: 當(dāng)前時(shí)間通過 yyyy-MM-dd HH:mm:ss SSS 格式化后的輸出: 2018-05-17 15:38:42 224

2.字符串轉(zhuǎn)日期
模式(yyyy/MM/dd HH:mm:ss)需要和字符串格式保持一致,如果不一樣就會(huì)拋出解析異常ParseException

SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
  
String str = "2016/1/5 12:12:12";

try {
Date d = sdf.parse(str);
System.out.printf("字符串 %s 通過格式  yyyy/MM/dd HH:mm:ss %n轉(zhuǎn)換為日期對(duì)象: %s",str,d.toString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar類

Calendar類即日歷類,常用于進(jìn)行“翻日歷”,比如下個(gè)月的今天是多久
1.Calendar與Date進(jìn)行轉(zhuǎn)換

//采用單例模式獲取日歷對(duì)象Calendar.getInstance();
Calendar c = Calendar.getInstance();

Date d2 = new Date(0);
c.setTime(d2); //把這個(gè)日歷,調(diào)成日期 : 1970.1.1 08:00:00
Date d = c.getTime();//通過日歷對(duì)象得到日期對(duì)象
System.out.println("當(dāng)前日歷的日起對(duì)象: "+d);

輸出結(jié)果為:Thu Jan 01 08:00:00 CST 1970

2.翻日歷
add方法,在原日期上增加年/月/日
set方法,直接設(shè)置年/月/日

private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
Date now = c.getTime();
// 當(dāng)前日期
System.out.println("當(dāng)前日期:	" + format(c.getTime()));

// 下個(gè)月的今天
c.setTime(now);
c.add(Calendar.MONTH, 1);
System.out.println("下個(gè)月的今天:	" +format(c.getTime()));

// 去年的今天
c.setTime(now);
c.add(Calendar.YEAR, -1);
System.out.println("去年的今天:	" +format(c.getTime()));

// 上個(gè)月的第三天
c.setTime(now);
c.add(Calendar.MONTH, -1);
c.set(Calendar.DATE, 3);
System.out.println("上個(gè)月的第三天:	" +format(c.getTime()));

}

private static String format(Date time) {
return sdf.format(time);
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/69415.html

相關(guān)文章

  • Java編程基礎(chǔ)15——正則表達(dá)式&常用工具

    摘要:正則表達(dá)式的概述和簡單使用正則表達(dá)式是指一個(gè)用來描述或者匹配一系列符合某個(gè)語法規(guī)則的字符串的單個(gè)字符串。例如,在表達(dá)式中,存在四個(gè)這樣的組組零始終代表整個(gè)表達(dá)式。 1_正則表達(dá)式的概述和簡單使用 A:正則表達(dá)式 是指一個(gè)用來描述或者匹配一系列符合某個(gè)語法規(guī)則的字符串的單個(gè)字符串。其實(shí)就是一種規(guī)則。有自己特殊的應(yīng)用。 作用:比如注冊(cè)郵箱,郵箱有用戶名和密碼,一般會(huì)對(duì)其限制長度,這個(gè)...

    miqt 評(píng)論0 收藏0
  • java常見API第二部分

    摘要:類是日期時(shí)間格式化子類的抽象類,我們通過這個(gè)類可以幫我們完成日期和文本之間的轉(zhuǎn)換也就是可以在對(duì)象與對(duì)象之間進(jìn)行來回轉(zhuǎn)換。構(gòu)造方法由于為抽象類,不能直接使用,所以需要常用的子類。 day01【Object類、常用API】 主要內(nèi)容 Object類 Date類 DateFormat類 Calendar類 System類 StringBuilder類 包裝類 教學(xué)目標(biāo) -[ ] 能夠說出...

    maybe_009 評(píng)論0 收藏0
  • Spring Boot和Feign中使用Java 8時(shí)間日期API(LocalDate等)的序列化問

    摘要:是開始提供的時(shí)間日期,主要用來優(yōu)化以前對(duì)于時(shí)間日期的處理操作。然而,我們?cè)谑褂没蚴褂玫臅r(shí)候,往往會(huì)發(fā)現(xiàn)使用請(qǐng)求參數(shù)或返回結(jié)果中有的時(shí)候會(huì)發(fā)生各種問題。 LocalDate、LocalTime、LocalDateTime是Java 8開始提供的時(shí)間日期API,主要用來優(yōu)化Java 8以前對(duì)于時(shí)間日期的處理操作。然而,我們?cè)谑褂肧pring Boot或使用Spring Cloud Fei...

    UCloud 評(píng)論0 收藏0
  • 國外程序員整理的Java資源大全

    摘要:日期和時(shí)間處理日期和時(shí)間的函數(shù)庫。使用中可觀察序列,創(chuàng)建異步基于事件應(yīng)用程序的函數(shù)庫。為分布式系統(tǒng)提供延遲和容錯(cuò)處理。發(fā)布使用本機(jī)格式分發(fā)應(yīng)用程序的工具。將程序資源和打包成和的本機(jī)文件。圖像處理用來幫助創(chuàng)建評(píng)估或操作圖形的函數(shù)庫。 好資源要分享原文 譯者 唐尤華 翻譯自 github akullpp 構(gòu)建 這里搜集了用來構(gòu)建應(yīng)用程序的工具。 Apache Maven:Mave...

    chengtao1633 評(píng)論0 收藏0
  • 20 個(gè)案例教你在 Java 8 中如何處理日期和時(shí)間?

    摘要:前言前面一篇文章寫了如何安全的使用里面介紹了如何處理日期時(shí)間,以及如何保證線程安全,及其介紹了在中的處理時(shí)間日期默認(rèn)就線程安全的類。引入了全新的日期時(shí)間格式工具,線程安全而且使用方便。 前言 前面一篇文章寫了《SimpleDateFormat 如何安全的使用?》, 里面介紹了 SimpleDateFormat 如何處理日期/時(shí)間,以及如何保證線程安全,及其介紹了在 Java 8 中的處...

    Rango 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<