package sc545.pay.utils;
import java.awt.image.BufferedImage;
import java.io.*;
import java.math.BigDecimal;
import java.net.URL;
import java.net.URLConnection;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.imageio.ImageIO;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateUtils;
public class Utils {
public static void main(String[] args) {
getWeekNum();
}
/**
* 生成范围内的随机数
*
* @param min
* 最小值(包含)
* @param max
* 最大值(不包含)
* @return
*/
public static int randomNum(int min, int max) {
int num = new Random().nextInt(max - min) + min;
return num;
}
/**
* 生成范围内的随机小数
*
* @param min
* 最小值(包含)
* @param max
* 最大值(不包含)
* @param w
* 小数点后保留位数
* @return
*/
public static Double randomNumForDouble(int min, int max, int w) {
BigDecimal db = new BigDecimal(Math.random() * (max - min) + min);
Double num = db.setScale(w, BigDecimal.ROUND_HALF_UP).doubleValue();
return num;
}
/**
* 时间转字符串,格式:yyyy-MM-dd
*
* @param d null为当前时间
*
* @return
*/
public static String date2String(Date d) {
if(d==null) d=new Date();
Date date = d;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String s = sdf.format(date);
return s;
}
/**
* 时间转字符串
*
*
* @param d null为当前时间
*
* @param fm null为"yyyy-MM-dd HH:mm:ss"
*
* @return
*/
public static String date2String(Date d, String fm) {
if(d==null) d=new Date();
Date date = d;
if (fm == null)
fm = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(fm);
String s = sdf.format(date);
return s;
}
/**
* 字符串转时间,格式 yyyy-MM-dd
*
* @param s
* 时间字符串
* @return
*/
public static Date string2Date(String s) {
try {
String string = s;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(string);
return date;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* 字符串转时间
* fm为null时默认"yyyy-MM-dd HH:mm:ss"
*
* @param s
* 时间字符串
* @param fm
* 格式
* @return
*/
public static Date string2Date(String s, String fm) {
try {
String string = s;
if (fm == null)
fm = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(fm);
Date date = sdf.parse(string);
return date;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* 时间加减法
*
* @param d
* 时间
* @param day
* 要操作的天数,正为加,负为减
* @return
*/
public static Date dateadd(Date d, int day) {
if(d==null) d=new Date();
Calendar yourd = Calendar.getInstance();
yourd.setTime(d);
yourd.add(Calendar.DAY_OF_YEAR, day);// 日期加
return yourd.getTime();
}
/**
* 判断某个时间是否过期。传进来一个旧时间,和有效天数,判断今天这个旧时间是否过期
*
* @param d
* 旧时间 "2019-8-5"
* @param day
* 有效天数
* @return true:没有过期;false:过期了
*/
public static boolean dateout(String d, int day) {
if (d == null || "".equals(d) || "null".equals(d))
return false;
Date date = Utils.dateadd(Utils.string2Date(d), day);
Date newdate = new Date();
int i = date.compareTo(newdate);
if (i >= 0) {
return true;
} else {
return false;
}
}
/**
* 计算两个时间相差的秒数
*
* @param endDate
* 结束时间 null为当前
* @param nowDate
* 开始时间
* @return
*/
public static long datePoor(Date endDate, Date nowDate) {
if(endDate==null) endDate = new Date();
long ns = 1000;// 一秒
// 获得两个时间的毫秒时间差异
long diff = endDate.getTime() - nowDate.getTime();
long sec = diff / ns;// 计算差多少秒
return sec;
}
/**
* 计算两个时间相差的秒数
*
* @param endDate
* 结束时间 null为当前
* @param nowDate
* 开始时间
* @return
*/
public static long datePoor(String endDates, String nowDates) {
if(endDates==null) endDates=Utils.date2String(null, null);
Date endDate = Utils.string2Date(endDates, null);
Date nowDate = Utils.string2Date(nowDates, null);
long ns = 1000;// 一秒
// 获得两个时间的毫秒时间差异
long diff = endDate.getTime() - nowDate.getTime();
long sec = diff / ns;// 计算差多少秒
return sec;
}
/**
* 设置定时器启动时间
* @param format 格式 yyyy-MM-dd 07:30:00
* @param d 星期,1-7,其他数字默认当天
* @return
*/
public static Date setTime(String format,int d) {
long daySpan=24 * 60 * 60 * 1000;
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date startTime = new Date();
try {
startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(sdf.format(new Date()));
} catch (ParseException e) {
e.printStackTrace();
}
int dd = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);//今天是星期几
--dd;
if(dd==0) dd=7;
if(d>7) d=dd;
if(d<0){
if (System.currentTimeMillis() > startTime.getTime()){
startTime = new Date(startTime.getTime() + (daySpan));
}
}else if(d==dd){
if (System.currentTimeMillis() > startTime.getTime()){
startTime = new Date(startTime.getTime() + (daySpan*7));
}
}else{
if(d>dd){
startTime = new Date(startTime.getTime() + (daySpan*(d-dd-1)));
}else{
startTime = new Date(startTime.getTime() + (daySpan*(7-dd+d-1)));
}
}
return startTime;
}
/**
* 判断字符串是否为URL
*
* @param urls
* 需要判断的String类型url
* @return true:是URL;false:不是URL
*/
public static boolean isHttpUrl(String urls) {
boolean isurl = false;
String regex = "(((https|http)?://)?([a-z0-9]+[.])|(www.))"
+ "\\w+[.|\\/]([a-z0-9]{0,})?[[.]([a-z0-9]{0,})]+((/[\\S&&[^,;\u4E00-\u9FA5]]+)+)?([.][a-z0-9]{0,}+|/?)";// 设置正则表达式
Pattern pat = Pattern.compile(regex.trim());// 对比
Matcher mat = pat.matcher(urls.trim());
isurl = mat.matches();// 判断是否匹配
if (isurl) {
isurl = true;
}
return isurl;
}
/**
* 缩短网址
*
* @param longUrl
* @return shortUrl
*/
public static String shortUrl(String longUrl) {
// 以自己服务器做映射的修改
String s2 = "http://api.t.sina.com.cn/short_url/shorten.json?source=3271760578&url_long="
+ longUrl;
s2 = "http://sa.sogou.com/gettiny?url=" + longUrl;
return s2;
}
/**
* URL解析与转义
*
* @param url
* url
* @param flg
* 1:转义,-1:解析
* @return
*/
public static String doURL(String url, int flg) {
if (url == null || "".equals(url) || "null".equals(url))
return "";
String str = "";
if (flg == 1) {
try {
str = java.net.URLEncoder.encode(url, "UTF-8");// 转义
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} else if (flg == -1) {
try {
str = java.net.URLDecoder.decode(url, "UTF-8"); // 解析
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return str;
}
/**
* 获取cookie的value
*
* @param cookies
* 数组
* @param name
* @return value
*/
public static String getcookie(Cookie[] cookies, String name) {
String valueString = "";
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
if (name.equals(cookies[i].getName())) {
valueString = cookies[i].getValue();
break;
}
}
}
return valueString;
}
/**
* * selvet PrintWriter 输出一个html提示页,并且5秒后跳转到url
*
* @param out
* @param context
* 弹框内容
* @param url
*/
public static void outHtml(PrintWriter out, String context, String url) {
// ///////////////////////输出HTML///////////////////////////////
out.println("");
out.println("");
out.println("
");
out.println(" ");
out.println(" ");
out.println(" ");
out.println(" 提示信息");
out.println(" ");
out.println("");
out.println("");
out.println(" ");
out.println("
");
out.println("
");
out.println(" ");
out.println("
");
out.println("
");
out.println("
" + context + "
");
out.println("
5秒后自动跳转
");
out.println("
立即前往");
out.println("
");
out.println(" ");
out.println("");
out.println("");
out.flush();
out.close();
// //////////////////////////////////////////////////
}
/**
* * springmvc return 输出一个html提示页,并且5秒后跳转到url
*
* @param context
* 弹框内容
* @param url
*/
public static String putHtml(String context, String url) {
// ///////////////////////输出HTML///////////////////////////////
String s = "";
s += "";
s += "";
s += "";
s += " ";
s += " ";
s += " ";
s += " 提示信息";
s += " ";
s += "";
s += "";
s += " ";
s += "
";
s += "
";
s += " ";
s += "
";
s += "
";
s += "
" + context + "
";
s += "
5秒后自动跳转
";
s += "
立即前往";
s += "
";
s += " ";
s += "";
return s += "";
// //////////////////////////////////////////////////
}
/**
* 返回刷新
* @return
*/
public static String goback(){
String s = "";
return s;
}
/**
* 读取config.properties的值
*
* @return
*/
public static String getValue(String name) {
String path = Utils.class.getResource("/").getPath();
String value = null;
Properties prop = new Properties();
try {
// 读取属性文件a.properties
FileInputStream in = new FileInputStream(path
+ "/config.properties");
prop.load(in); // /加载属性列表
value = prop.getProperty(name);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
/**
* 利用DBUtils查询的listmap集给request设置setAttribute(map.key,map.value)
*
* @param request
* @param arr
* db查询的结果集(只能有一条记录 arr.get(0) )
* @return
*/
public static HttpServletRequest setAttr(HttpServletRequest request,
List