package com.hh.timeselector.timeutil.datedialog;

import android.content.Context;
import android.text.format.DateFormat;
import android.util.Log;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class PowerDateUtils {
	/**
	 * 
	 * @return 11/11
	 * @see [类、类#方法、类#成员]
	 */
	public static String getMyformatDate(String time) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
		String newDate = "";
		try {
			Date date = sdf.parse(time);
			SimpleDateFormat sdf1 = new SimpleDateFormat("MM/dd");
			newDate = sdf1.format(date);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return newDate;
	}

	/**
	 * 返回日期字符串,格式:yyyy-MM-dd 返回日期字符串
	 *
	 * @param year
	 * @param month
	 * @param day
	 * @return String
	 */
	public static String getDateStr(int year, int month, int day, int hour,
									int minute) {
		long time = componentTimeToTimestamp(year, month, day, hour, minute);

		return Date2String(time);
	}

	public static int dip2px(Context context, float dpValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dpValue * scale + 0.5f);
	}


	public static String getDateStr1(int year, int month, int day, int hour,
			int minute) {
		long time = componentTimeToTimestamp(year, month, day, hour, minute);

		return Date8String(time);
	}

	public static String getDateStr2(int year, int month, int day, int hour,
			int minute) {
		long time = componentTimeToTimestamp(year, month, day, hour, minute);

		return Date9String(time);
	}

	public static String getDateStr2(int year, int month, int day, int hour) {
		long time = componentTimeToTimestamp(year, month, day, hour);

		return Date9String(time);
	}

	/**
	 * 返回日期字符串,格式:yyyy-MM-dd 返回日期字符串
	 * 
	 * @param year
	 * @param month
	 * @param day
	 * @return String
	 */
	public static String getDateStr(int year, int month, int day, int hour) {
		long time = componentTimeToTimestamp(year, month, day, hour);

		return Date3String(time);
	}

	public static String getDateStr1(int year, int month, int day, int hour) {
		long time = componentTimeToTimestamp(year, month, day, hour);

		return Date4String(time);
	}

	public static String getDateStr12(int year, int month, int day, int hour) {
		long time = componentTimeToTimestamp(year, month, day, hour);

		return Date12String(time);
	}

	/**
	 * 返回日期字符串,格式:yyyy-MM-dd 返回日期字符串
	 * 
	 * @param year
	 * @param month
	 * @param day
	 * @return String
	 */
	public static String getDateStr(int year, int month, int day) {
		long time = componentTimeToTimestamp(year, month, day);

		return Date5String(time);
	}

	/**
	 * 返回日期字符串,格式:yyyy-MM-dd 返回日期字符串
	 * 
	 * @param year
	 * @param month
	 * @param day
	 * @return String
	 */
	public static String getRainDateStr(int year, int month, int day, int hour) {
		long time = componentTimeToTimestamp(year, month, day, hour);

		return Date4String(time);
	}

	public static String getRainDateStr(int year, int month, int day, int hour,
			int minute) {
		long time = componentTimeToTimestamp(year, month, day, hour, minute);

		return Date7String(time);
	}

	public static String getRainDateStr1(int year, int month, int day,
			int hour, int minute) {
		long time = componentTimeToTimestamp(year, month, day, hour, minute);

		return Date8String(time);
	}

	public static String getRainDateStr2(int year, int month, int day,
			int hour, int minute) {
		long time = componentTimeToTimestamp(year, month, day, hour, minute);

		return Date11String(time);
	}

	public static String getDateStr(int hour, int minute) {
		long time = componentTimeToTimestamp(hour, minute);

		return Date6String(time);
	}

	/**
	 * 
	 * 将时间转化成时间戳
	 * 
	 * @param year
	 *            年
	 * @param month
	 *            月
	 * @param day
	 *            日
	 * @param hour
	 *            小时
	 * @param minute
	 *            分钟
	 * @return 时间戳 long
	 */
	public static long componentTimeToTimestamp(int year, int month, int day,
			int hour, int minute) {

		Calendar c = Calendar.getInstance();
		c.set(Calendar.YEAR, year);

		c.set(Calendar.MONTH, month);

		c.set(Calendar.DAY_OF_MONTH, day);

		c.set(Calendar.HOUR_OF_DAY, hour);

		c.set(Calendar.MINUTE, minute);

		c.set(Calendar.SECOND, 0);

		c.set(Calendar.MILLISECOND, 0);

		return c.getTimeInMillis();
	}

	public static Calendar getCalendarDate(String dateString) {
		int year = 0;
		int month = 0;
		int day = 0;
		String[] arraydate = null;
		if (null != dateString && dateString.contains("-")) {
			arraydate = dateString.split("-");
		}
		if (null != arraydate && arraydate.length == 3) {
			year = Integer.parseInt(arraydate[0]);
			month = Integer.parseInt(arraydate[1]) - 1;
			day = Integer.parseInt(arraydate[2]);
		}

		Calendar c = Calendar.getInstance();
		c.set(Calendar.YEAR, year);

		c.set(Calendar.MONTH, month);

		c.set(Calendar.DAY_OF_MONTH, day);

		return c;

	}

	/**
	 * 
	 * 将时间转化成时间戳
	 * 
	 * @param year
	 *            年
	 * @param month
	 *            月
	 * @param day
	 *            日
	 * @param hour
	 *            小时
	 *            分钟
	 * @return 时间戳 long
	 */
	public static long componentTimeToTimestamp(int year, int month, int day,
			int hour) {

		Calendar c = Calendar.getInstance();

		c.set(Calendar.YEAR, year);

		c.set(Calendar.MONTH, month);

		c.set(Calendar.DAY_OF_MONTH, day);

		c.set(Calendar.HOUR_OF_DAY, hour);

		c.set(Calendar.SECOND, 0);

		c.set(Calendar.MILLISECOND, 0);

		return c.getTimeInMillis();
	}

	public static long componentTimeToTimestamp(int hour, int minute) {

		Calendar c = Calendar.getInstance();

		c.set(Calendar.HOUR_OF_DAY, hour);

		c.set(Calendar.MINUTE, minute);

		c.set(Calendar.SECOND, 0);

		c.set(Calendar.MILLISECOND, 0);

		return c.getTimeInMillis();
	}

	/**
	 * 
	 * 将时间转化成时间戳
	 * 
	 * @param year
	 *            年
	 * @param month
	 *            月
	 * @param day
	 *            日
	 */
	public static long componentTimeToTimestamp(int year, int month, int day) {

		Calendar c = Calendar.getInstance();

		c.set(Calendar.YEAR, year);

		c.set(Calendar.MONTH, month);

		c.set(Calendar.DAY_OF_MONTH, day);

		return c.getTimeInMillis();
	}

	/**
	 * 时间转换成yyyy-MM-dd kk:mm格式
	 * 
	 * @param time
	 *            时间
	 * @return
	 */
	public static String Date2String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy-MM-dd kk:mm", time).toString();
	}

	public static String Date13String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy年MM月dd日 kk:mm", time).toString();
	}

	/**
	 * 时间转换成yyyy-MM-dd kk格式
	 * 
	 * @param time
	 *            时间
	 * @return
	 */
	public static String Date3String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy-MM-dd kk", time).toString();
	}

	/**
	 * 时间转换成yyyy-MM-dd kk格式
	 * 
	 * @param time
	 *            时间
	 * @return
	 */
	public static String Date4String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy年MM月dd日kk时", time).toString();
	}

	public static String Date12String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy-MM-dd", time).toString();
	}

	public static String Date11String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy年MM月dd日kk时mm分", time).toString();
	}

	/**
	 * 时间转换成yyyy-MM-dd格式
	 * 
	 * @param time
	 *            时间
	 * @return
	 */
	public static String Date5String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy-MM-dd", time).toString();
	}

	public static String Date6String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("kk:mm", time).toString();
	}

	public static String Date7String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy年MM月dd日kk时mm分", time).toString();
	}

	public static String Date8String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy-MM-dd kk:mm", time).toString();
	}

	public static String Date9String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy-MM-dd-kk", time).toString();
	}

	public static String Date99String(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy-MM-dd kk", time).toString();
	}

	/**
	 * 时间转换成yyyy-MM-dd 格式
	 * 
	 * @param time
	 *            时间
	 * @return
	 */
	public static String Date2String2(long time) {
		if (time == 0) {
			return "";
		}
		return DateFormat.format("yyyy-MM-dd", time).toString();
	}

	public static String getNowDateString() {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
		Date curDate = new Date(System.currentTimeMillis());// 获取当前时间
		String str = formatter.format(curDate);
		return str;

	}

	public static String getNowDateString3() {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmm");
		Date curDate = new Date(System.currentTimeMillis());// 获取当前时间
		String str = formatter.format(curDate);
		return str;

	}

	public static String getNowDateString2() {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		Date curDate = new Date(System.currentTimeMillis());// 获取当前时间
		String str = formatter.format(curDate);
		return str;

	}

	public static String getNowDetailsDateString() {
		SimpleDateFormat formatter = new SimpleDateFormat("MM/dd");
		Date curDate = new Date(System.currentTimeMillis());// 获取当前时间
		String str = formatter.format(curDate);
		return str;

	}

	public static String getNowGisDateString() {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		Date curDate = new Date(System.currentTimeMillis() - 20 * 60 * 1000);// 获取当前时间
		curDate.setMinutes(curDate.getMinutes() / 10 * 10);
		String str = formatter.format(curDate);
		Log.i("time", "getNowGisDateString" + str);
		return str;

	}

	/*
	 * 累积雨量结束时间
	 */
	public static String getNowRainEndDateString() {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		Date curDate = new Date(System.currentTimeMillis());
		return formatter.format(curDate);
	}

	/*
	 * 累积雨量开始时间
	 */
	public static String getNowRainStartDateString() {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		Date curDate = new Date(System.currentTimeMillis());
		curDate.setDate(curDate.getDate() - 1);
		return formatter.format(curDate);
	}

	/**
	 * 向前10分钟
	 * 
	 * @param date
	 * @return
	 */
	public static String getNowGisDateForwardString(String date) {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		String str = null;
		try {
			Date curDate = new Date(
					formatter.parse(date).getTime() + 10 * 60 * 1000);
			curDate.setMinutes(curDate.getMinutes() / 10 * 10);
			str = formatter.format(curDate);
			Log.i("time", "getNowGisDateForwardString" + str);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return str;

	}

	/**
	 * 向后10分钟
	 * 
	 * @param date
	 * @return
	 */
	public static String getNowGisDateBackwardsString(String date) {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		String str = null;
		try {
			Date curDate = new Date(
					formatter.parse(date).getTime() - 10 * 60 * 1000);
			curDate.setMinutes(curDate.getMinutes() / 10 * 10);
			str = formatter.format(curDate);
			Log.i("time", "getNowGisDateBackwardsString" + str);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return str;

	}

	/**
	 * 将毫秒数转为时间年
	 * 
	 * @return yyyy
	 */
	public static String timeMillis2String1(Object object) {

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
		String dateStr = sdf.format(object);

		return dateStr;
	}

	public static String timeMillis2String2(long time) {
		SimpleDateFormat sdf = new SimpleDateFormat("HH");
		String dateStr = sdf.format(time);

		return dateStr;
	}

	// public static String toTime(long time) {
	// SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
	// return sdf.format(time * 1000).toString();
	// }
	public static String toTime1(long time) {
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
		return sdf.format(time).toString();
	}

	public static String toTime(long time) {
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
		return sdf.format(time * 1000).toString();
	}

	/**
	 * 
	 * @param date
	 *            推送消息发送的时间
	 * @param aging
	 *            推送消息时效
	 * @return
	 */
	public static Boolean isTimeExceedAging(String date, String aging) {
		if (date.trim() == null || date.trim().equals("")
				|| date.trim().equals("null") || aging.trim() == null
				|| aging.trim().equals("") || aging.trim().equals("null")) {
			return false;
		}
		try {
			int mAging = Integer.parseInt(aging);
			String nowDate = Date2String(System.currentTimeMillis());
			SimpleDateFormat formatter = new SimpleDateFormat(
					"yyyy-MM-dd HH:mm");
			long time = formatter.parse(date).getTime();
			long nowtime = formatter.parse(nowDate).getTime();
			if (nowtime - time < mAging * 60 * 1000) {
				return true;
			} else
				return false;
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}

		return false;

	}

	public static String toTime2(long time) {
		SimpleDateFormat sdf = new SimpleDateFormat("kk:00");
		return sdf.format(time).toString();
	}

	public static Boolean canBidOnCurrentTime(String pPeriodValidity) throws Exception  {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		String time = df.format(System.currentTimeMillis());
		Date datap = df.parse(pPeriodValidity);
		Date datat = df.parse(time);
		long diff = datap.getTime() - datat.getTime();// 这样得到的差值是微秒级别
		long days = diff / (1000 * 60 * 60 * 24);
		long hours = (diff - days * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
		long minutes = (diff - days * (1000 * 60 * 60 * 24) - hours
				* (1000 * 60 * 60))
				/ (1000 * 60);
		System.out.println("" + days + "天" + hours + "小时" + minutes + "分");
		if(days!=0)
		{
			//相差时间为天,肯定不会到竞价
			return false;
		}
		if(hours<4)
		{
			return false;
		}
		if(hours>5)
		{
			return false;
		}
		return true;
		
//		if (hours > 3 && hours < 6) {
//			return true;
//		}
//		return false;
		
	}
}