很多朋友對于java如何獲取當前時間和string怎么改成date不太懂,今天就由小編來為大家分享,希望可以幫助到大家,下面一起來看看吧!
如何有效讀取Excel中的日期數據
importjxl.*;
importjxl.format.UnderlineStyle;
importjxl.write.*;
importjxl.write.Number;
importjxl.write.Boolean;
importjava.io.*;
classexcel{
publicexcel(){
}
/**
*讀取excel
*
*@paramfilepath
*/
publicstaticvoidreadexcel(Stringfilepath){
try{
InputStreamis=newFileInputStream(filepath);
Workbookrwb=Workbook.getWorkbook(is);
//sheetst=rwb.getsheet("0")這里有兩種方法獲取sheet表,1為名字,2為下標,從0開始
Sheetst=rwb.getSheet(0);
Cellc00=st.getCell(1,0);
//通用的獲取cell值的方式,返回字符串
Stringstrc00=c00.getContents();
//獲得cell具體類型值的方式
if(c00.getType()==CellType.LABEL){
LabelCelllabelc00=(LabelCell)c00;
strc00=labelc00.getString();
}
//輸出
System.out.println(strc00);
//關閉
rwb.close();
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*輸出excel
*
*@paramos
*/
publicstaticvoidwriteexcel(OutputStreamos){
try{
/**
*只能通過api提供的工廠方法來創建workbook,而不能使用WritableWorkbook的構造函數,
*因為類WritableWorkbook的構造函數為protected類型
*method(1)直接從目標文件中讀取WritableWorkbookwwb=
*workbook.createWorkbook(newfile(targetfile));method(2)如下實例所示
*將WritableWorkbook直接寫入到輸出流
*
*/
WritableWorkbookwwb=Workbook.createWorkbook(os);
//創建excel工作表指定名稱和位置
WritableSheetws=wwb.createSheet("testsheet1",0);
WritableSheetws2=wwb.createSheet("testsheet2",1);
//**************往工作表中添加數據*****************
//1.添加label對象
Labellabel=newLabel(0,0,"thisisalabeltest");
ws.addCell(label);
Labellabel2=newLabel(0,0,"thisisalabeltest2");
ws2.addCell(label2);
//添加帶有字型formatting對象
WritableFontwf=newWritableFont(WritableFont.TIMES,18,
WritableFont.BOLD,true);
WritableCellFormatwcf=newWritableCellFormat(wf);
Labellabelcf=newLabel(1,0,"thisisalabeltest",wcf);
ws.addCell(labelcf);
//添加帶有字體顏色的formatting對象
WritableFontwfc=newWritableFont(WritableFont.ARIAL,10,
WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.RED);
WritableCellFormatwcffc=newWritableCellFormat(wfc);
LabelLabelcf=newLabel(1,0,"thisisaLabelcell",wcffc);
ws.addCell(Labelcf);
//2.添加number對象
NumberLabeln=newNumber(0,1,3.1415926);
ws.addCell(Labeln);
//添加帶有formatting的number對象
NumberFormatnf=newNumberFormat("#.##");
WritableCellFormatwcfn=newWritableCellFormat(nf);
NumberLabelnf=newjxl.write.Number(1,1,3.1415926,wcfn);
ws.addCell(Labelnf);
//3.添加boolean對象
BooleanLabelb=newjxl.write.Boolean(0,2,false);
ws.addCell(Labelb);
//4.添加datetime對象
jxl.write.DateTimeLabeldt=newjxl.write.DateTime(0,3,
newjava.util.Date());
ws.addCell(Labeldt);
//添加帶有formatting的dateformat對象
DateFormatdf=newDateFormat("ddmmyyyyhh:mm:ss");
WritableCellFormatwcfdf=newWritableCellFormat(df);
DateTimeLabeldtf=newDateTime(1,3,newjava.util.Date(),wcfdf);
ws.addCell(Labeldtf);
//添加圖片對象,jxl只支持png格式圖片
//Fileimage=newFile("f:\\2.png");
//WritableImagewimage=newWritableImage(0,1,2,2,image);
//ws.addImage(wimage);
//寫入工作表
wwb.write();
wwb.close();
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*拷貝后,進行修改,其中File1為被copy對象,File2為修改后創建的對象
*盡單元格原有的格式化修飾是不能去掉的,我們還是可以將新的單元格修飾加上去,以使單元格的內容以不同的形式表現
*
*@paramFile1
*@paramFile2
*/
publicstaticvoidmodifyexcel(FileFile1,FileFile2){
try{
Workbookrwb=Workbook.getWorkbook(File1);
WritableWorkbookwwb=Workbook.createWorkbook(File2,rwb);//copy
WritableSheetws=wwb.getSheet(0);
WritableCellwc=ws.getWritableCell(0,0);
//判斷單元格的類型,做出相應的轉換
Java日期工具類
Java日期工具類:可以進行日期轉化、今天日期、昨天日期、明天日期、指定日期,非常實用。
想必程序員在開發過程中,遇到日期轉化肯定避免不了的。它讓人愛恨不已,而有些又記不住,每次遇到都得問度娘。我最近在開發過程中亦是如此。
為了讓自己更好的記憶,方便以后遇到日期類型轉化相關開發。因此,自己作了適當的整理,編寫了一個Java日期工具類,包括獲得今天日期、昨天日期、明天日期、日期和字符串之間轉化等相關轉化。希望這個日期工具類,也能提高你對日期轉化的開發效率。
日期工具類:DateTools.java
packagecom.geshanzsq;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
importjava.util.GregorianCalendar;
/**
*日期工具類
*@author格姍知識圈
*/
publicclassDateTools{
/**
*日期轉化為指定日期格式類型
*@paramdate日期
*@parampattern日期格式類型,如yyyy-MM-dd,yyyy年MM月dd日HH:mm:ss
*@return
*/
publicstaticStringdateToString(Datedate,Stringpattern){
SimpleDateFormatsdf=newSimpleDateFormat(pattern);//日期格式
Stringdate_str=sdf.format(date);//日期轉化為指定格式
returndate_str;
}
/**
*日期字符串轉化為指定日期格式類型
*@paramdate_str日期字符串
*@parampattern日期格式類型,如yyyy-MM-dd,yyyy年MM月dd日HH:mm:ss
*@return
*@throwsParseException
*/
publicstaticDatestringToDate(Stringdate_str,Stringpattern)throwsParseException{
SimpleDateFormatsdf=newSimpleDateFormat(pattern);//日期格式
Datedate=sdf.parse(date_str);//日期轉化為指定格式
returndate;
}
/**
*獲得今天日期
*@parampattern日期格式類型,如yyyy-MM-dd,yyyy年MM月dd日HH:mm:ss
*@return
*/
publicstaticStringgetToday(Stringpattern){
Datedate=newDate();//今天日期
SimpleDateFormatsdf=newSimpleDateFormat(pattern);//日期格式
Stringtoday=sdf.format(date);//日期轉化為指定格式
returntoday;
}
/**
*獲得明天日期
*@parampattern日期格式類型,如yyyy-MM-dd,yyyy年MM月dd日HH:mm:ss
*@return
*/
publicstaticStringgetTomorrow(Stringpattern){
Datedate=newDate();//今天日期
Calendarcal=newGregorianCalendar();
cal.setTime(date);//設置時間
cal.add(Calendar.DATE,1);//把日期往后增加一天.整數往后推,負數往前移動
date=cal.getTime();//這個時間就是日期往后推一天的日期結果,即明天日期
SimpleDateFormatsdf=newSimpleDateFormat(pattern);//日期格式
Stringtommorrow=sdf.format(date);//明天日期
returntommorrow;
}
/**
*獲得昨天日期
*@parampattern日期格式類型,如yyyy-MM-dd,yyyy年MM月dd日HH:mm:ss
*@return
*/
publicstaticStringgetYesterday(Stringpattern){
Datedate=newDate();//今天日期
Calendarcal=newGregorianCalendar();
cal.setTime(date);//設置時間
cal.add(Calendar.DATE,-1);//把日期往后增加一天.整數往后推,負數往前移動
date=cal.getTime();//這個時間就是日期往前推一天的日期結果,即昨天日期
SimpleDateFormatsdf=newSimpleDateFormat(pattern);//日期格式
Stringyesterday=sdf.format(date);//昨天日期
returnyesterday;
}
/**
*獲得指定日期的后一天
*@paramdate指定日期
*@parampattern日期格式類型,如yyyy-MM-dd,yyyy年MM月dd日HH:mm:ss
*@return
*@throwsParseException
*/
publicstaticDategetAfterDay(Datedate,Stringpattern)throwsParseException{
Calendarcal=newGregorianCalendar();
cal.setTime(date);//設置時間
cal.add(Calendar.DATE,1);//把日期往后增加一天.整數往后推,負數往前移動
date=cal.getTime();//這個時間就是日期往后推一天的日期結果,即后一天日期
SimpleDateFormatsdf=newSimpleDateFormat(pattern);//日期格式
Stringnext_date_str=sdf.format(date);//后一天日期
//將日期字符串轉化為指定日期格式類型
Dateafter_date=stringToDate(next_date_str,pattern);
returnafter_date;
}
/**
*獲得指定日期的后一天
*@paramdate_str指定日期字符串
*@parampattern日期格式類型,如yyyy-MM-dd,yyyy年MM月dd日HH:mm:ss
*@return
*@throwsParseException
*/
publicstaticStringgetAfterDay(Stringdate_str,Stringpattern)throwsParseException{
//將日期字符串轉化為指定日期格式類型
Datedate=stringToDate(date_str,pattern);
Calendarcal=newGregorianCalendar();
cal.setTime(date);//設置時間
cal.add(Calendar.DATE,1);//把日期往后增加一天.整數往后推,負數往前移動
date=cal.getTime();//這個時間就是日期往后推一天的日期結果,即后一天日期
SimpleDateFormatsdf=newSimpleDateFormat(pattern);//日期格式
Stringafter_date_str=sdf.format(date);//后一天日期
returnafter_date_str;
}
/**
*獲得指定日期的前一天
*@paramdate指定日期
*@parampattern日期格式類型,如yyyy-MM-dd,yyyy年MM月dd日HH:mm:ss
*@return
*@throwsParseException
*/
publicstaticDategetBeforetDay(Datedate,Stringpattern)throwsParseException{
Calendarcal=newGregorianCalendar();
cal.setTime(date);//設置時間
cal.add(Calendar.DATE,-1);//把日期往后增加一天.整數往后推,負數往前移動
date=cal.getTime();//這個時間就是日期往后推一天的日期結果,即前一天日期
SimpleDateFormatsdf=newSimpleDateFormat(pattern);//日期格式
Stringbefore_date_str=sdf.format(date);//前一天日期
//將日期字符串轉化為指定日期格式類型
Datebefore_date=stringToDate(before_date_str,pattern);
returnbefore_date;
}
/**
*獲得指定日期的前一天
*@paramdate_str指定日期字符串
*@parampattern日期格式類型,如yyyy-MM-dd,yyyy年MM月dd日HH:mm:ss
*@return
*@throwsParseException
*/
publicstaticStringgetBreforeDay(Stringdate_str,Stringpattern)throwsParseException{
//將日期字符串轉化為指定日期格式類型
Datedate=stringToDate(date_str,pattern);
Calendarcal=newGregorianCalendar();
cal.setTime(date);//設置時間
cal.add(Calendar.DATE,-1);//把日期往后增加一天.整數往后推,負數往前移動
date=cal.getTime();//這個時間就是日期往后推一天的日期結果,即前一天日期
SimpleDateFormatsdf=newSimpleDateFormat(pattern);//日期格式
Stringbefore_date_str=sdf.format(date);//前一天日期
returnbefore_date_str;
}
}
測試類:Test.java
packagecom.hrg;
importjava.text.ParseException;
/**
*測試類
*@author格姍知識圈
*/
publicclassTest{
publicstaticvoidmain(String[]args)throwsParseException{
//日期格式類型
Stringpattern="yyyy-MM-dd";
//獲得今天日期
System.out.println("---------獲得今天日期---------");
Stringtoday=DateTools.getToday(pattern);
System.out.println("今天日期:"+today);
//獲得明天日期
System.out.println("---------獲得明天日期---------");
Stringtomorrow=DateTools.getTomorrow(pattern);
System.out.println("明天日期:"+tomorrow);
//獲得昨天日期
System.out.println("---------獲得昨天日期---------");
Stringyesterday=DateTools.getYesterday(pattern);
System.out.println("昨天日期:"+yesterday);
//獲得指定日期的后一天
System.out.println("---------獲得指定日期的后一天---------");
Stringdate_str="2018-10-03";
System.out.println("指定日期:"+date_str);
Stringafter_date=DateTools.getAfterDay(date_str,pattern);
System.out.println("指定日期的后一天:"+after_date);
//獲得指定日期的后一天
System.out.println("---------獲得指定日期的前一天---------");
System.out.println("指定日期:"+date_str);
Stringbefore_date=DateTools.getBreforeDay(date_str,pattern);
System.out.println("指定日期的前一天:"+before_date);
}
}
運行結果:
---------獲得今天日期---------
今天日期:2018-11-20
---------獲得明天日期---------
明天日期:2018-11-21
---------獲得昨天日期---------
昨天日期:2018-11-19
---------獲得指定日期的后一天---------
指定日期:2018-10-03
指定日期的后一天:2018-10-04
---------獲得指定日期的前一天---------
指定日期:2018-10-03
指定日期的前一天:2018-10-02
你看完之后,相信對日期轉化有了更好的了解。當然,代碼里面有部分是冗余的,主要是為了方便讓大家清晰看懂。你看懂理解后,可以根據業務需要進行適當的修改。
Java獲取當前時間的小時(24小時制)
Calendarca=Calendar.getInstance();
inthour=ca.get(Calendar.HOUR);//小時
mongo里的時間與java獲取的時間有啥不同
如果都獲取的是同一臺機器的系統時間,那就一樣。
如果不是,可能不一樣
java中,知道結束日期
可以通過日期的add(Calendar.MONTH,1)方法進行月份切換,輸出每個滿足條件的值
Dated1=newSimpleDateFormat("yyyy-MM").parse("2015-6");//定義起始日期
Dated2=newSimpleDateFormat("yyyy-MM").parse("2016-5");//定義結束日期
Calendardd=Calendar.getInstance();//定義日期實例
dd.setTime(d1);//設置日期起始時間
while(dd.getTime().before(d2)){//判斷是否到結束日期
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM");
Stringstr=sdf.format(dd.getTime());
System.out.println(str);//輸出日期結果
dd.add(Calendar.MONTH,1);//進行當前日期月份加1
}
結果:
好了,文章到此結束,希望可以幫助到大家。