日期工具類,根據日期格式自動選擇格式型別

2021-07-11 15:10:13 字數 1738 閱讀 6980

日期工具類,經常會用到把string轉成date或long型別的方法,一般需要指定格式型別(pattern,比如"yyyy-mm-dd hh:mm:ss"),轉換方法如下:

/**

* 將指定的日期轉換成unix時間戳

* * @param string date 需要轉換的日期

* @param string dateformat 需要轉換的日期格式

* @return long 時間戳,單位:秒

*/public static long datetounixtimestamp(string datestr, string pattern) catch (parseexception e)

return timestamp/1000;

}

這種方法有個缺點就是需要指定乙個pattern,如果格式變化了,就得改**。

利用正規表示式,可以解決這個問題。**如下:

先定義乙個列舉類,把各種已知的格式及其正規表示式關聯起來。同時定義乙個方法,利用這個列舉類,通過日期字串獲取格式型別:

/** 日期格式列舉類,根據需要新增其他格式 **/

public enum datepattern-\\d-\\dt\\d:\\d:\\d$"),

iso_minute("yyyy-mm-dd't'hh:mm", "^\\d-\\d-\\dt\\d:\\d$"),

date_time("yyyy-mm-dd hh:mm:ss", "^\\d-\\d-\\d \\d:\\d:\\d$"),

date_only("yyyy-mm-dd", "^\\d-\\d-\\d$"),

year_month("yyyy-mm", "^\\d-\\d$");

datepattern(string pattern, string regex)

public string getpattern()

public string getregex()

private string pattern;

private string regex;

/*** 根據日期字串,判斷該日期的格式型別。

* * @param datestr 日期字串

* @return 日期的格式型別,比如getpatternbydatestr("2016-04-27 10:15:08")返回:"yyyy-mm-dd hh:mm:ss"

*/public static string getpatternbydatestr(string datestr)

}return null;

} }

利用這個列舉類的字串轉long方法(字串轉date的方法類似,略):

/**

* 將指定的日期轉換成unix時間戳

* * @param string date 需要轉換的日期,自動匹配日期格式

* @return long 時間戳,單位:秒

*/public static long datetounixtimestamp(string datestr)

//測試

public static void main(string args)

測試結果如下:

1462432929

1462432929

1462377600

大功告成!

日期工具類

import math from datetime import datetime,timedelta class calendarutils 日期工具類 staticmethod defdelta day delta 0 param delta 偏移量 return 0今天,1昨天,2前天,1明天...

java日期格式化工具類

日期工具類 預設使用 yyyy mm dd hh mm ss 格式化日期 author public final class dateutils 根據預設格式返回當前日期 return public static string getnow 根據使用者格式返回當前日期 param format re...

date 日期工具類

兩個日期相減獲得月份 param startcal param endcal return throws parseexception public static int twodatagetmonth string startcal,string endcal throws parseexcept...