java日期函數精確到日,java日期時間函數分享

前言:

對于新手程序員的我來說,寫業務代碼是現在的日常,在此過程中經常需要對日期時間進行處理,我挑了幾個較有用的日期處理函數分享給大家。

正文:

1、將某格式的時間字符串轉化成毫秒時間戳表示的字符串:

public static String dateTimeStrToMills(String dateTime,String format){

String dateStr = null;

SimpleDateFormat sdf = new SimpleDateFormat(format);

Calendar calendar = Calendar.getInstance();

calendar.clear();

try {

Date d = new Date();

d = sdf.parse(dateTime);

calendar.setTime(d);

dateStr = calendar.getTimeInMillis()+"ms";

} catch (ParseException e) {

e.printStackTrace();

}

return dateStr;

}

測試例:

@Test

public void test1(){

String date = "2018-10-10 08:30:00";

String format = "yyyy-MM-dd HH:mm:ss";

String timeMS = DateTimeUtils.dateTimeStrToMills(date,format);

System.out.println("毫秒時間:" + timeMS);//毫秒時間:1539131400000ms

}

2、獲取某個月的天數:

public static int getDayNumOfMonth(int year,int month){

Calendar calendar = Calendar.getInstance();

calendar.clear();

calendar.set(year, month,0);

return calendar.get(Calendar.DAY_OF_MONTH);

}

測試例:

@Test

public void test2(){

int year = 2018;

int month = 10;

int dayNum = DateTimeUtils.getDayNumOfMonth(year,month);

System.out.println("dayNum:" + dayNum);//dayNum:31

}

3、獲取某日、月、年前后的日期:

public static String getBeforeOrAfterDateType(int num,String date,String format,int timeType){

SimpleDateFormat sdf = new SimpleDateFormat(format);

String resultDate = "";

Calendar calendar = Calendar.getInstance();

calendar.clear();

try {

Date d = new Date();

d = sdf.parse(date);

calendar.setTime(d);

calendar.add(timeType, num);//一天的結束是第二天的開始

resultDate = sdf.format(calendar.getTime());

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return resultDate;

}

測試例:

@Test

public void test3(){

//獲取某個月前面一個月

int num = -1;

String date = "2018-10";

String format = "yyyy-MM";

int timeType = Calendar.MONTH;

String resultDate = DateTimeUtils.getBeforeOrAfterDateType(num,date,format,timeType);

System.out.println("resultDate:" + resultDate);//resultDate:2018-09

//獲取某天幾天后的日期

num = 3;

date = "2018-10-05";

format = "yyyy-MM-dd";

timeType = Calendar.DAY_OF_MONTH;

resultDate = DateTimeUtils.getBeforeOrAfterDateType(num,date,format,timeType);

System.out.println("resultDate:" + resultDate);//resultDate:2018-10-08

}

4、根據毫秒時間戳獲得格式化后的日期:

public static String millisecondToDate(Long millisecond,String dateFormat){

Date date = new Date(millisecond);

GregorianCalendar gc = new GregorianCalendar();

gc.setTime(date);

SimpleDateFormat format = new SimpleDateFormat(dateFormat);

String sb = format.format(gc.getTime());

return sb;

}

測試例:

@Test

public void test4(){

long mill = 1539131400000l;

String format = "yyyy-MM-dd HH:mm:ss";

String date = DateTimeUtils.millisecondToDate(mill,format);

System.out.println("date:" + date);//date:2018-10-10 08:30:00

}

5、獲取某月第一天:

public static String getFirstDayOfMonth(int year,int month){

Calendar cal = Calendar.getInstance();

cal.set(Calendar.YEAR, year);

cal.set(Calendar.MONTH, month-1);

int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);

cal.set(Calendar.DAY_OF_MONTH, firstDay);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

String firstDayOfMonth = sdf.format(cal.getTime());

return firstDayOfMonth;

}

測試例:

@Test

public void test5(){

int year = 2018;

int month = 11;

String format = "yyyy-MM-dd";

String date = DateTimeUtils.getFirstDayOfMonth(year,month,format);

System.out.println("date:" + date);//date:2018-11-01

}

6、獲取某月最后一天:

public static String getLastDayOfMonth(int year,int month,String format){

Calendar cal = Calendar.getInstance();

cal.clear();

cal.set(Calendar.YEAR, year);

cal.set(Calendar.MONTH, month-1);

int lastDay = 0;

lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

cal.set(Calendar.DAY_OF_MONTH, lastDay);

SimpleDateFormat sdf = new SimpleDateFormat(format);

String lastDayOfMonth = sdf.format(cal.getTime());

return lastDayOfMonth;

}

測試例:

@Test

public void test6(){

int year = 2018;

int month = 11;

String format = "yyyy-MM-dd";

String date = DateTimeUtils.getLastDayOfMonth(year,month,format);

System.out.println("date:" + date);//date:2018-11-30

}

7、獲取起止日期之間的所有字符串(可自定義間隔、格式、日期類型):

public static ListgetDatesBetweenTwoDate(String begin,String end,int num,int timeType,String format){

ListlDates;

lDates = new ArrayList<>();

try {

SimpleDateFormat sdf = new SimpleDateFormat(format);

Date beginDate = sdf.parse(begin);

Date endDate = sdf.parse(end);

lDates.add(sdf.format(beginDate));

Calendar calendar = Calendar.getInstance();

calendar.setTime(beginDate);

boolean bContinue = true;

while(bContinue){

calendar.add(timeType, num);

if(endDate.after(calendar.getTime())){

lDates.add(sdf.format(calendar.getTime()));

}else{

break;

}

}

lDates.add(sdf.format(endDate));

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return lDates;

}

測試例:

@Test

public void test7(){

String startDate = "2018-10-10";

String endDate = "2018-10-15";

String format = "yyyy-MM-dd";

int num = 1;

int timeType = Calendar.DAY_OF_MONTH;

ListtimeList = DateTimeUtils.getDatesBetweenTwoDate(startDate,endDate,num,timeType,format);

System.out.println(timeList.toString());

//[2018-10-10, 2018-10-11, 2018-10-12, 2018-10-13, 2018-10-14, 2018-10-15]

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534828.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534828.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534828.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python變量區變量保存與加載_python – Flask:使用全局變量將數據文件加載到內存中...

我有一個大的XML文件,它被打開,加載到內存中,然后由Python類關閉.簡化示例如下所示&#xff1a;class Dictionary():def __init__(self,filename):f open(filename)self.contents f.readlines()f.close()def getDefinitionForWord(self,word):# returns a word,using etree p…

php 順豐接口實例,順豐BSP接口PHP開發注意事項

1&#xff0c;xml報文不用附加"<?xml version"1.0" encoding"UTF-8" ?>"&#xff0c;不支持&#xff0c;會報格式錯誤。2&#xff0c;提交服務器時要重點注意。直接使用curl方式的&#xff0c;一定要把數據做http_build_query&#xff0…

跨域產生的原因和解決方法_板式家具開料機加工過程產生崩邊原因及解決方法...

家具廠數控開料機加工材料的時候會遇到材料崩邊的問題&#xff0c;下面我們系統的分析下產生的原因以及解決的辦法產生崩邊現象的原因&#xff1f;其一是材料本身問題。目前除了實木家具&#xff0c;目前使用較多的就是 板式貼皮的材料&#xff0c;板材的優點就是標準化生產&am…

facade 門面 php,php設計模式之門面(Facade)模式

該模式屬于結構型模式什么是門面模式&#xff1f;定義&#xff1a;門面模式(有時候也稱為外觀模式)是指提供一個統一的接口去訪問多個子系統的多個不同的接口&#xff0c;它為子系統中的一組接口提供一個統一的高層接口。外部與子系統的通信是通過一個門面(Facade)對象進行。其…

架構師一般做到多少歲_《迷茫中的我們該如何突破瓶頸——成長為一名架構師》...

如何成長為一名架構師&#xff1f;架構師是一個既需要掌控整體又需要洞悉局部瓶頸并依據具體的業務場景給出解決方案的團隊領導型人物。一個架構師得需要足夠的想像力,能把各種目標需求進行不同維度的擴展&#xff0c;為目標客戶提供更為全面的需求清單。很多程序員想成為一名架…

php-fpm初始化失敗,FPM的初始化 - [ PHP7的內核剖析 ] - 在線原生手冊 - php中文網

FPM的初始化接下來看下fpm的啟動流程&#xff0c;從main()函數開始&#xff1a;//sapi/fpm/fpm/fpm_main.cint main(int argc, char *argv[]){... //注冊SAPI:將全局變量sapi_module設置為cgi_sapi_modulesapi_startup(&cgi_sapi_module);... //執行php_module_staru…

python 高級語言特性_Pytohon學習筆記(一)Python編程語言歷史及特性

Python編程語言歷史及特性編程語言:用戶:問題空間計算機: 解決問題解空間抽象機器代碼-->微碼編程-->高級語言shell編程:ptyhon控制語言:膠水語言適合領域:web,Django字節碼:bytecode面向過程:以指令為中心&#xff0c;由指令處理數據 如何組織代碼結局問題面向對象:以數…

php laravel 返回統一格式,封裝的統一的Laravel響應類,返回數據類

封裝的統一的Laravel返回數據類namespace App\Library;class Response{const OK 0;const BAD_REQUEST 1000;const PARAM_ERROR 1001;const SQL_ERROR 4000;const FORBIDDEN 4003;const SERVER_ERROR 5000;public static $errMsg [self::BAD_REQUEST > 請求錯誤,self:…

python3連接數據庫步驟_Python3連接Mysql8.0遇到的問題及處理步驟

最近在使用Python開發系統&#xff0c;需連接mysql數據庫&#xff0c;我用的是Python3連接MySQL8.0&#xff0c;其中老是報錯以下問題&#xff1a;網上給了各種各樣的方法&#xff0c;大多是通過各種方式修改密碼。最簡單的方法是更換了root密碼的認證方式解決的&#xff0c;新…

360手柄搖桿漂移修復_徹底解決你的Switch手柄搖桿問題,最省錢的完美修復。

我想很多Switch的消費者都遇到了一個問題&#xff0c;用久了之后的手柄失靈&#xff0c;移動不精準&#xff0c;卡頓&#xff0c;自動位移等現象。玩個游戲都非常的糟心。動一下搖桿角色都會自動移動...這些問題的出現主要原因是搖桿內部進了灰塵&#xff0c;才導致各種現象的出…

libzdb 連接mysql,數據庫連接池庫libzdb使用教程

Libzdb挺強大&#xff0c; 支持Mysql Oracle SQLite PostgreSQL&#xff0c;支持C和C Object C&#xff0c;不能在Window下用(看源碼是因為基于Linux線程機制編寫實現)。遺憾的是找個資料太費勁&#xff0c;只能到Libzdb官網&#xff1a;點此進入 &#xff0c;今正看著上面英文…

請給出計算231-1的python表達式_【填空題】計算2 32 -1的Python表達式可以書寫為____...

【填空題】計算2 32 -1的Python表達式可以書寫為____更多相關問題【判斷題】軍隊和國防建設指導思想實行戰略轉變的實質是:從立足于早打、大打、打核戰爭的臨戰準備狀況,轉到和平時期建設的軌道上來。【單選題】社會學家認為,一門專業必須具有專業特征,護理專業的特征是( )A. 滿…

數值分析方程求根實驗matlab,數值分析實驗之非線性方程求根(MATLAB實現)

一、實驗目的1&#xff0e; 了解一般非線性方程的求根是比較復雜的事情&#xff1a;要討論(或知道)它有無實根&#xff0c;有多少實根&#xff1b;知道求近似根常用的幾種方法&#xff0c;每種方法的特點是什么。2&#xff0e; 用通過二分法(區間半分法)、不動點(也Picard)迭代…

python多線程輸出_萌新python多線程

剛開始學習多線程的時候鬧了個笑話在使用python線程打印東西的時候發現自己定的的線程數據沒有打印,找半天都沒有找到問題,也沒好意思問,自己憋了半天才發現問題!代碼如下:import threadingdef SayHi():print(say hi !)def SeyHello():print(say hello !)print(start)threading…

php5.6擴展編寫,php 5.6版本中編寫一個PHP擴展的簡單示例

php 5.6版本中編寫一個PHP擴展的簡單示例這篇文章主要介紹了php 5.6版本中編寫一個PHP擴展的簡單示例,本文給出擴展實現代碼、編譯方法、配置方法和使用例子等內容,需要的朋友可以參考下有時候在php本身沒有滿足需求的api時候&#xff0c;需要自己寫相應的擴展&#xff0c;擴展…

iis php 數據庫亂碼,如何解決php插入數據亂碼問題

php插入數據亂碼的解決辦法&#xff1a;首先要設置數據表的字符集為utf8&#xff1b;然后修改字符集格式&#xff1b;接著建立字符集為utf-8的數據庫&#xff1b;最后通過php mysql語句插入數據即可。mysql數據庫亂碼問題解決辦法我們在使用數據庫(mysql)的時候最怕的就是數據庫…

python 文檔字符串_新款Python文檔字符串生成器來了

又一款懶人神器問世了&#xff1a;Visual Studio Code的擴展&#xff0c;基于CodeBERT的Python文檔字符串生成器。看來現在&#xff0c;這群偷「懶」的程序員們連文檔字符串都不想自己寫了。基于CodeBERT的生成器跟正常的DocStrings用法一樣&#xff0c;你只需要輸入三引號「“…

php 棧實現歷史記錄后退,棧:如何實現瀏覽器的前進和后退功能

受限制的線性表先進后出實現一個棧數組實現叫順序棧public class ArrayStack {private String[] items;//存儲數據的數組private int count;//棧中的元素private int n;//棧的大小public ArrayStack(int n){this.items new String[n];this.n n;this.count 0;}//入棧操作publ…

vc 通過句柄修改窗口大小_VC應用(1)通過VC修改銷售訂單行項目的字段

VC是SAP中非常重要的功能&#xff0c;過去多年來&#xff0c;我參與了不少使用VC的項目&#xff0c;我將通過多篇文章介紹VC的一些應用&#xff0c;本文介紹通過VC修改銷售訂單行項目的字段01 概覽在銷售訂單創建時&#xff0c;對于可配置物料來說&#xff0c;不同的配置可能會…

mysql增加實例,MySQL的簡單使用筆記:增加實例以及啟動

增加實例增加實例這里指的的在源碼編譯安裝完MySQL之后建立一個初始的數據庫實例&#xff0c;占用某一端口&#xff0c;或者是使用新端口啟動新的mysqld進程。MySQL需要一些基礎的數據庫以及表來完成基本的設定&#xff0c;比如控制連接的mysql.user表&#xff1a;123456789101…