2017-6-9

## 判斷是今天還是明天

``````public static String getDayString(long millseconds) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);

if (millseconds > calendar.getTimeInMillis()) return "明天";
else return "今天";
}``````

## 計算兩個日期間相差幾天

``````//計算兩個日期間相差幾天
public static long getDay(String dateStr1, String sFormat1, String dateStr2, String sFormat2) {
try {
Date date1 = new SimpleDateFormat(sFormat1).parse(dateStr1);
Date date2 = new SimpleDateFormat(sFormat2).parse(dateStr2);
Long time = Math.abs(date1.getTime() - date2.getTime());
return time / 1000 / 60 / 60 / 24;
} catch (ParseException e) {
e.printStackTrace();
}
return -1;
}``````

## 增加或減少一定的時間

``````//增加或減少一定的時間
public static Date addDate(Date date, int field, int amount) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(field, amount); //月 Calendar.MONTH；天 Calendar.DAY_OF_YEAR；小時 Calendar.HOUR；分 Calendar.MINUTE；秒 Calendar.SECOND
return calendar.getTime();
}``````

## 判斷緩存是否過期

``System.currentTimeMillis() / 1000 / 60 / 60 / 24 / 2 + "_bqt";//緩存2天``

## 獲取一個時間，要求當月有31天

``````public static long getAGoodTime() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2017);
calendar.set(Calendar.MONTH, 5);
calendar.set(Calendar.DAY_OF_MONTH, 16);

return calendar.getTimeInMillis();
}``````

## SimpleDateFormat格式化Date示例

``````System.out.println(SimpleDateFormat.getInstance().format(new Date()));//16-5-1 下午7:47
System.out.println(SimpleDateFormat.getDateInstance().format(new Date()));//2016-5-1
System.out.println(SimpleDateFormat.getTimeInstance().format(new Date()));//19:46:04
System.out.println(SimpleDateFormat.getDateTimeInstance().format(new Date()));//2016-5-1 19:45:10``````

``````System.out.println(SimpleDateFormat.getDateInstance(DateFormat.DEFAULT).format(date));//2016-9-1
System.out.println(SimpleDateFormat.getDateInstance(DateFormat.SHORT).format(date));//16-9-1
System.out.println(SimpleDateFormat.getDateInstance(DateFormat.MEDIUM).format(date));//2016-9-1
System.out.println(SimpleDateFormat.getDateInstance(DateFormat.LONG).format(date));//2016年9月1日
System.out.println(SimpleDateFormat.getDateInstance(DateFormat.FULL).format(date) + "\n");//2016年9月1日 星期四``````

``````System.out.println(SimpleDateFormat.getTimeInstance(DateFormat.DEFAULT).format(date));//18:04:37
System.out.println(SimpleDateFormat.getTimeInstance(DateFormat.SHORT).format(date));//下午6:04
System.out.println(SimpleDateFormat.getTimeInstance(DateFormat.MEDIUM).format(date));//18:04:37
System.out.println(SimpleDateFormat.getTimeInstance(DateFormat.LONG).format(date));//下午06時04分37秒
System.out.println(SimpleDateFormat.getTimeInstance(DateFormat.FULL).format(date));//下午06時04分37秒 CST``````

``````System.out.println(new SimpleDateFormat("yyyy.MM.dd a HH:mm:ss SSS", Locale.getDefault()).format(new Date()));//2016.05.01 下午 22:29:46 583
System.out.println(new SimpleDateFormat("M月d日 m分 第D天 H點(ah點) s秒S微秒").format(new Date()));//5月1日 57分 第122天 22點(下午10點)  33秒95微秒
System.out.println(new SimpleDateFormat("z(zzzz) Gyy年第w周 M月第W周 E").format(new Date()));//CST(中國標准時間) 公元16年第19周 5月第1周 星期日``````

## Calendar和Date的妙用

``````public static void main(String[] args) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse("2016-05-1 19:45:8");
System.out.println(format.format(date));//2016-05-01 19:45:08
System.out.println(format.format(reFormatDate(date)));//2017-10-16 19:45:08
}

public static Date reFormatDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);// date中僅時和分時有效的，年月日重新格式化
calendar.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR));
calendar.set(Calendar.MONTH, Calendar.getInstance().get(Calendar.MONTH));
calendar.set(Calendar.DAY_OF_MONTH, Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
return calendar.getTime();
}``````

## Calendar基本操作示例

``````Calendar calendar = Calendar.getInstance();
//年月日
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;//這里一定要注意：0代表1月，11表示十二月，12表示下一年的1月…
int day = calendar.get(Calendar.DAY_OF_MONTH);
//上下午
String apStr = calendar.get(Calendar.AM_PM) == 1 ? "下午" : "上午";//0代表上午，1代表下午
//時分秒
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);//由 0 至 61 的整數表示，值 60 和 61 只對閏秒發生
//星期
String[] weeks = { "日", "一", "二", "三", "四", "五", "六" };
int weekNum = calendar.get(Calendar.DAY_OF_WEEK);//1表示星期日，7表示星期六
String weekStr = "星期" + weeks[weekNum - 1];

String string = year + "年" + month + "月" + day + "日" + " " + weekStr + " " + apStr + hour + ":" + minute + ":" + second;
System.out.println(string);//2016年5月1日 星期日 下午23:27:26``````

## TimeZone中可獲取到的有用信息

``````TimeZone timeZone = TimeZone.getDefault();//獲取此主機的默認 TimeZone
System.out.println(timeZone.getDisplayName());//中國標准時間
System.out.println(timeZone.getDisplayName(true, TimeZone.SHORT));//CDT。如果為 true，則返回夏令時名稱
System.out.println(timeZone.getDisplayName(false, TimeZone.SHORT));//CST
System.out.println(timeZone.getDisplayName(true, TimeZone.LONG));//中國夏令時
System.out.println(timeZone.getDisplayName(false, TimeZone.LONG));//中國標准時間

System.out.println(timeZone.getID());//Asia/Shanghai
System.out.println(timeZone.getRawOffset() / 1000 / 60 / 60);//8。也就是8小時，因為我們是在東八區
System.out.println(Arrays.toString(TimeZone.getAvailableIDs()));//獲取受支持的所有可用ID``````

``````【所有可用ID】

## Locale中可獲取到的有用信息

``````Locale locale = Locale.getDefault();//獲得此 Java 虛擬機實例的當前默認語言環境值
System.out.println(locale.getCountry());//CN。國家
System.out.println(locale.getDisplayCountry());//中國
System.out.println(locale.getLanguage());//zh。語言
System.out.println(locale.getDisplayLanguage());//中文

System.out.println(Locale.CHINESE);//zh。代表中文環境
System.out.println(Locale.CHINA);//zh_CN。代表中國大陸的中文環境
System.out.println(Locale.TAIWAN);//zh_TW。代表中國台灣的中文環境
System.out.println(Locale.ENGLISH);//en。代表英文環境
System.out.println(Locale.US);//en_US。代表美國的英文環境
System.out.println(Locale.UK);//en_GB。代表英國的英文環境

System.out.println(Arrays.toString(Locale.getAvailableLocales()));//返回所有已安裝語言環境的數組``````

``````【所有已安裝語言環境】
[, ar_AE, ar_JO, ar_SY, hr_HR, fr_BE, es_PA, mt_MT, es_VE, bg, zh_TW, it, ko, uk, lv, da_DK, es_PR, vi_VN, en_US, sr_ME, sv_SE, es_BO, en_SG, ar_BH, pt, ar_SA, sk, ar_YE, hi_IN, ga, en_MT, fi_FI, et, sv, cs, sr_BA_#Latn, el, uk_UA, hu, fr_CH, in, es_AR, ar_EG, ja_JP_JP_#u-ca-japanese, es_SV, pt_BR, be, is_IS, cs_CZ, es, pl_PL, tr, ca_ES, sr_CS, ms_MY, hr, lt, es_ES, es_CO, bg_BG, sq, fr, ja, sr_BA, is, es_PY, de, es_EC, es_US, ar_SD, en, ro_RO, en_PH, ca, ar_TN, sr_ME_#Latn, es_GT, sl, ko_KR, el_CY, es_MX, ru_RU, es_HN, zh_HK, no_NO_NY, hu_HU, th_TH, ar_IQ, es_CL, fi, ar_MA, ga_IE, mk, tr_TR, et_EE, ar_QA, sr__#Latn, pt_PT, fr_LU, ar_OM, th, sq_AL, es_DO, es_CU, ar, ru, en_NZ, sr_RS, de_CH, es_UY, ms, el_GR, iw_IL, en_ZA, th_TH_TH_#u-nu-thai, hi, fr_FR, de_AT, nl, no_NO, en_AU, vi, nl_NL, fr_CA, lv_LV, de_LU, es_CR, ar_KW, sr, ar_LY, mt, it_CH, da, de_DE, ar_DZ, sk_SK, lt_LT, it_IT, en_IE, zh_SG, ro, en_CA, nl_BE, no, pl, zh_CN, ja_JP, de_GR, sr_RS_#Latn, iw, en_IN, ar_LB, es_NI, zh, mk_MK, be_BY, sl_SI, es_PE, in_ID, en_GB]``````
2017-8-25