开发小工具
程序员文章站
2022-06-24 17:43:45
...
获取上级方法的信息
* Thread.currentThread().getStackTrace()[1]是你当前方法执行堆栈
* Thread.currentThread().getStackTrace()[2]就是上一级的方法堆栈 以此类推
*
* @param content
* @return
*/
public static String getMethodStr(String content) {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("「当前方法名称」>>>【 ")
.append(Thread.currentThread().getStackTrace()[2].getMethodName())
.append(" (属于 >>> ")
.append(Thread.currentThread().getStackTrace()[2].getFileName())
.append(" 类)")
.append(" 】");
if (!TextUtils.isEmpty(content)) {
stringBuffer.append(",「方法的内容信息」 >>>【 ")
.append(content)
.append(" 】");
}
stringBuffer.append(",「当前时间」>>>【 ")
.append(getDateTime())
.append(" 】");
return stringBuffer.toString();
}
请求参数 按照字母排序并 MD5 加密
* PHP 签名
* @return
*/
public static String getSign(SortedMap<String,String> map) {
StringBuffer sb = new StringBuffer();
Set<Map.Entry<String, String>> entries = map.entrySet();
Iterator<Map.Entry<String, String>> iterator = entries.iterator();
List<String> values = new ArrayList<>();
while(iterator.hasNext()){
Map.Entry entry = iterator.next();
String k = String.valueOf(entry.getKey());
String v = String.valueOf(entry.getValue());
//忽略的字段
if (StringUtils.isNotEmpty(v) && entry.getValue() !=null && !"sign".equals(k)) {
values.add(k + "=" + v);
}
}
String sign = StringUtils.join(values,"&");
//自定义的**
sb.append(sign)
.append("8c0e42b6be17e2dc3c42f225ef8eff091561539433");
return CommonUtils.MD5(sb.toString()).toLowerCase();
}
/**
* md5常用工具类
*
* @param data
* @return
*/
public static String MD5(String data) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] array = md5.digest(data.getBytes("UTF-8"));
StringBuilder sb = new StringBuilder();
for (byte item : array) {
sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3));
}
return sb.toString().toUpperCase();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
当前时间的 前 多少天
* 当前日期的前?天 dataNumber 天数
* @return
*/
public static String getBeforeOneDay(int dataNumber) {
Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
ca.setTime(new Date()); //设置时间为当前时间
ca.add(Calendar.DATE, -dataNumber); //日减
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
return df.format(ca.getTime());
}
/***
* 获取?个小时之前的时间
*/
public static String getLastFourHour(int hourNumber) {
Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
ca.setTime(new Date()); //设置时间为当前时间
ca.add(Calendar.HOUR, -hourNumber); //减去 ?个小时
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
return df.format(ca.getTime());
}
时间戳转时间(10位时间戳)
* 时间戳转时间(10位时间戳)
*
* @return
*/
public static String timestampToDate() {
long timeStampSec = System.currentTimeMillis() / 1000;
return String.format("%010d", timeStampSec);
}
/**
* String(yyyy-MM-dd HH:mm:ss)转10位时间戳
*
* @param time
* @return
*/
public static Integer StringToTimestamp(String time) {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(time)
.append(" ")
.append("00:00:00");
int times = 0;
try {
times = (int) ((Timestamp.valueOf(stringBuffer.toString()).getTime()) / 1000);
} catch (Exception e) {
e.printStackTrace();
}
if (times == 0) {
System.out.println("String转10位时间戳失败");
}
return times;
}
/**
* String(yyyy-MM-dd HH:mm:ss)转10位时间戳
*
* @param time
* @return
*/
public static Integer StringToTiamp(String time) {
int times = 0;
try {
times = (int) ((Timestamp.valueOf(time).getTime()) / 1000);
} catch (Exception e) {
e.printStackTrace();
}
if (times == 0) {
System.out.println("String转10位时间戳失败");
}
return times;
}
时间比较
* @param newTime 较大的时间 (如果为空 默认当前时间 ,表示和当前时间相比)
* @return -1 :同一天. 0:昨天 . 1 :至少是前天.
* @throws ParseException 转换异常
* @author LuoB.
* @param---oldTime 较小的时间
*/
private static int isYeaTerDay(String newTime) throws ParseException {
Date oldTime = new Date();
System.out.println("oldTime" + oldTime.getTime());
//将下面的 理解成 yyyy-MM-dd 00:00:00 更好理解点
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date today = format.parse(newTime);
System.out.println("newTime" + today.getTime());
//昨天 86400000=24*60*60*1000 一天
if ((today.getTime() - oldTime.getTime()) > 0 && (today.getTime() - oldTime.getTime()) <= 86400000) {
return 0;
} else if ((today.getTime() - oldTime.getTime()) <= 0) { //至少是今天
return -1;
} else { //至少是前天
return 1;
}
}
不满一年
* 1 不满一年
* @param startDay
* @param endDay
* @return
*/
public static int isOneYear(String startDay, String endDay) {
// 一年的秒数
long oneMM = 31536000;
long stDay = 0;
long enDay = 0;
stDay = StringToTimestamp(startDay);
enDay = StringToTimestamp(endDay);
if ((enDay - stDay) < oneMM) {
//不到一年
return 1;
} else {
return -1;
}
}
下一篇: 分布式一致性与共识算法