package com.exi.oa.util;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;
import s6.lunar.ChineseLunar;
import s6.lunar.ChineseLunar.CalElement;
public class DateUtil {
static Calendar today = Calendar.getInstance();
static ChineseLunar cl = new ChineseLunar();
/*获取日期*/
public static String getDay(String date){
String h;
String [] day = date.split("-");
h = day[2];
return h;
}
/*获取月份*/
public static String getMonth(String date){
String m;
String [] day = date.split("-");
m = day[1];
return m;
}
/*获取年份*/
public static String getYear(String date){
String y;
String [] day = date.split("-");
y = day[0];
return y;
}
/*获取当前系统时间*/
public static String getSysDate(){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
return sdf.format(date);
}
/*格式化日期时间*/
public static String formatDatetime(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
return sdf.format(date);
}
public static String formatDatetime(String date) throws ParseException{
DateFormat fmt = new SimpleDateFormat("yyyy年MM月dd日");
Date d = fmt.parse(date);
return d.toString();
}
public static String formatDatetime(String date,int forid){
if(date == null ||"".equals(date.trim())){
return "";
}else{
String str = "";
str = date.substring(0,date.indexOf("."));
String[] array = str.split(" ");
String[] dates = array[0].split("-");
switch (forid) {
case 0: //yyyy-MM-dd HH:mm:ss
str = date.substring(0,date.indexOf("."));
break;
case 1: //yyyy-MM-dd
str = date.substring(0,date.indexOf("."));
str = str.substring(0,str.indexOf(" "));
break;
case 2: //yyyy年MM月dd日 HH:mm:ss
str = dates[0]+"年"+dates[1]+"月"+dates[2]+"日 "+array[1];
break;
case 3: //yyyy年MM月dd日 HH:mm
str = dates[0]+"年"+dates[1]+"月"+dates[2]+"日 "+array[1].substring(0, array[1].lastIndexOf(":"));
break;
case 4: //yyyy年MM月dd日 HH:mm:ss
str = dates[0]+"年"+dates[1]+"月"+dates[2]+"日 ";
break;
default:
break;
}
return str;
}
}
/*获取当前时间的毫秒*/
public String getSysTimeMillise(){
long i = System.currentTimeMillis();
return String.valueOf(i);
}
/*获取星期几*/
public static String getWeek(){
Calendar cal = Calendar.getInstance();
int i = cal.get(Calendar.DAY_OF_WEEK);
switch (i) {
case 1:
return "星期日";
case 2:
return "星期一";
case 3:
return "星期二";
case 4:
return "星期三";
case 5:
return "星期四";
case 6:
return "星期五";
case 7:
return "星期六";
default:
return "";
}
}
public static String formatCommentTime(String str){
Date date = parse(str, "EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
String dateStr = sdf.format(date);
return dateStr;
}
public static Date parse(String str, String pattern, Locale locale) {
if(str == null || pattern == null) {
return null;
}
try {
return new SimpleDateFormat(pattern, locale).parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/*public void getChinaDate(){
Calendar today = Calendar.getInstance();
ChineseLunar cl = new ChineseLunar();
cl.calc(today.get(Calendar.YEAR), today.get(Calendar.MONTH));
CalElement e = cl.getToday();
StringBuffer sb = new StringBuffer();
if (!"".equals(e.solarTerms)) {
sb.append(e.solarTerms);
}
if (!"".equals(e.solarFestival)) {
sb.append(e.solarFestival);
}
if (!"".equals(e.lunarFestival)) {
sb.append(e.lunarFestival);
}
System.out.println("公历:");
System.out.println(e.sYear + "年" + e.sMonth + "月" + e.sDay + "日");
System.out.println("农历:");
System.out.println(e.lYear + "年" + e.lMonth + "月" + e.lDay + "日");
System.out.println(sb.toString());
}*/
public static String getNlMinYear(){
cl.calc(today.get(Calendar.YEAR), today.get(Calendar.MONTH));
CalElement e = cl.getToday();
StringBuffer sb = new StringBuffer();
if (!"".equals(e.solarTerms)) {
sb.append(e.solarTerms);
}
if (!"".equals(e.solarFestival)) {
sb.append(e.solarFestival);
}
if (!"".equals(e.lunarFestival)) {
sb.append(e.lunarFestival);
}
return String.valueOf(e.lYear);
}
public static int getNlMinMonth(){
cl.calc(today.get(Calendar.YEAR), today.get(Calendar.MONTH));
CalElement e = cl.getToday();
StringBuffer sb = new StringBuffer();
if (!"".equals(e.solarTerms)) {
sb.append(e.solarTerms);
}
if (!"".equals(e.solarFestival)) {
sb.append(e.solarFestival);
}
if (!"".equals(e.lunarFestival)) {
sb.append(e.lunarFestival);
}
return e.lMonth;
}
public static int getNlMinDay(){
cl.calc(today.get(Calendar.YEAR), today.get(Calendar.MONTH));
CalElement e = cl.getToday();
StringBuffer sb = new StringBuffer();
if (!"".equals(e.solarTerms)) {
sb.append(e.solarTerms);
}
if (!"".equals(e.solarFestival)) {
sb.append(e.solarFestival);
}
if (!"".equals(e.lunarFestival)) {
sb.append(e.lunarFestival);
}
return e.lDay;
}
//农历月份
static String[] nlMonth = {"正","二","三","四","五","六","七","八","九","十","十一","十二"};
//农历日
static String[] nlday = {"初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",
"十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",
"廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"};
//农历天干
String[] mten={"null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
//农历地支
String[] mtwelve={"null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)",
"巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)"};
public static String convertNlYear(String year){
String maxYear = "";
for(int i = 0; i < year.length(); i++){
maxYear = maxYear + minCaseMax(year.substring(i,i+1));
}
return maxYear;
}
public static String convertNlMoeth(int month){
String maxMonth = "";
maxMonth = nlMonth[month - 1];
return maxMonth;
}
public static String convertNlDay(int day){
String maxDay = "";
maxDay = nlday[day - 1];
return maxDay;
}
public static String minCaseMax(String str){
switch (Integer.parseInt(str)) {
case 0:
return "零";
case 1:
return "一";
case 2:
return "二";
case 3:
return "三";
case 4:
return "四";
case 5:
return "五";
case 6:
return "六";
case 7:
return "七";
case 8:
return "八";
case 9:
return "九";
default:
return "null";
}
}
public static String getNlDate(){
String year = convertNlYear(getNlMinYear());
String month = convertNlMoeth(getNlMinMonth());
String day = convertNlDay(getNlMinDay());
return year+ " 年 " + month + "月 " + day;
}
}