• 日期处理


    package com.atom.util;
    
    import java.text.ParseException;
    import java.text.ParsePosition;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Locale;
    
    public class DateUtil {
    	public final static String DEF_DATE_FORMAT = "yyyy/MM/dd";
    
    	public final static String DEF_TIME_FORMAT = "kk:mm";
    
    	public final static String DEF_DATE_TIME = "yyyy/MM/dd HH:mm";
    
    	public final static String ORA_DATE_FORMAT = "yyyy-MM-dd";
    
    	public final static String ORA_TIME_FORMAT = "HH24:MI";
    
    	public final static String ORA_DATE_TIME = "YYYY-MM-DD HH24:MI";
    
    	public final static String ORA_DATE_TIME_FORMAT = "yyyyMMddHHMM";
    
    	public final static String SQL_DATE_TIME_FORMAT_LIMIT = "yyyy-MM-dd HH:mm:ss";
    
    	public final static String FILE_INDENTIFY_FORMAT = "yyyyMMddHHmmss";
    	
    	public final static long ONE_DAY = 24*60*60*1000;
    
    	/**
    	 * Get Long object from default format string
    	 * 
    	 * @param dateStr
    	 * @return
    	 */
    	public static Long strToLong(String dateStr) {
    		try {
    			SimpleDateFormat formatDate = new SimpleDateFormat(DEF_DATE_FORMAT);
    			ParsePosition pos = new java.text.ParsePosition(0);
    			Date tempDate = formatDate.parse(dateStr, pos);
    			return new Long(tempDate.getTime());
    		} catch (Exception e) {
    			return null;
    		}
    	}
    
    	/**
    	 * 方法 getBetweenDays 得到两个日期的间隔天数
    	 * 
    	 * @param endDate
    	 *            时间字符串1,如:2001-07-17 11:00:00
    	 * @param startDate
    	 *            时间字符串2,如:2001-12-31 11:00:00
    	 * @return long 间隔天数(long)
    	 */
    	public static long getBetweenDays(String endDate, String startDate) {
    		if (endDate == null || startDate == null)
    			return -1;
    		if (endDate.length() < 10 || startDate.length() < 10)
    			return -1;
    		int startYear = 2001, startMonth = 12, startDay = 31;
    		int endYear = 2001, endMonth = 12, endDay = 31;
    
    		try {
    			startYear = Integer.parseInt(endDate.substring(0, 4));
    			startMonth = Integer.parseInt(endDate.substring(5, 7));
    			startDay = Integer.parseInt(endDate.substring(8, 10));
    			endYear = Integer.parseInt(startDate.substring(0, 4));
    			endMonth = Integer.parseInt(startDate.substring(5, 7));
    			endDay = Integer.parseInt(startDate.substring(8, 10));
    		} catch (NumberFormatException e) {
    		} catch (Exception e) {
    		}
    
    		Calendar startCalendar = Calendar.getInstance();
    		Calendar endCalendar = Calendar.getInstance();
    		startCalendar.set(startYear, startMonth - 1, startDay, 1, 0, 0);
    		endCalendar.set(endYear, endMonth - 1, endDay, 0, 0, 0);
    		Date endDateTemp = startCalendar.getTime();
    		Date startDateTemp = endCalendar.getTime();
    		long startTime = endDateTemp.getTime();
    		long endTime = startDateTemp.getTime();
    		long times = startTime - endTime;
    		// long days = Math.abs(times / ( 1000 *
    		// 3600 * 24
    		// ));
    		long days = times / (1000 * 3600 * 24);
    		return days;
    	}
    
    	/**
    	 * 方法 getAfterDate 得到与指定日期相差指定天数的日期
    	 * 
    	 * @param baseDate
    	 *            时间字符串,如:2001-07-17 11:00:00
    	 * @param dayCount
    	 *            向前或向后的天数,向后为正数,向前为负值
    	 * @return 处理后的日期字符串
    	 */
    	public static String getAfterDate(String baseDate, int dayCount) {
    		int year = Integer.parseInt(baseDate.substring(0, 4));
    		int month = Integer.parseInt(baseDate.substring(5, 7));
    		int date = Integer.parseInt(baseDate.substring(8, 10));
    
    		Calendar calendar = Calendar.getInstance();
    		calendar.set(year, month - 1, date);
    		calendar.add(Calendar.DATE, dayCount);
    		Date _date = calendar.getTime();
    		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    		String dateString = formatter.format(_date);
    
    		return dateString;
    	}
    	
    	public static Date addDays(Date baseDate,int addDaysNum){
    		return new Date(baseDate.getTime()+3*ONE_DAY);
    	}
    
    	public static String parse(String baseDate) {
    
    		String dateString = baseDate;
    		baseDate = baseDate.trim().toLowerCase();
    		try {
    			if (baseDate.length() == 11) {
    				dateString = baseDate.substring(7);
    				if (baseDate.substring(3, 6).equals("jan"))
    					dateString += "-01-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("feb"))
    					dateString += "-02-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("mar"))
    					dateString += "-03-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("apr"))
    					dateString += "-04-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("may"))
    					dateString += "-05-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("jun"))
    					dateString += "-06-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("jul"))
    					dateString += "-07-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("aug"))
    					dateString += "-08-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("sep"))
    					dateString += "-09-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("oct"))
    					dateString += "-10-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("nov"))
    					dateString += "-11-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("dec"))
    					dateString += "-12-" + baseDate.substring(0, 2);
    				else
    					dateString = baseDate;
    			} else if (baseDate.length() > 11) {
    				dateString = baseDate.substring(7, 11);
    				if (baseDate.substring(3, 6).equals("jan"))
    					dateString += "-01-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("feb"))
    					dateString += "-02-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("mar"))
    					dateString += "-03-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("apr"))
    					dateString += "-04-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("may"))
    					dateString += "-05-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("jun"))
    					dateString += "-06-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("jul"))
    					dateString += "-07-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("aug"))
    					dateString += "-08-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("sep"))
    					dateString += "-09-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("oct"))
    					dateString += "-10-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("nov"))
    					dateString += "-11-" + baseDate.substring(0, 2);
    				else if (baseDate.substring(3, 6).equals("dec"))
    					dateString += "-12-" + baseDate.substring(0, 2);
    				else
    					dateString = baseDate;
    				if (!dateString.equals(baseDate)) {
    					dateString += baseDate.substring(11);
    				}
    			}
    		} catch (Exception ex) {
    			dateString = baseDate;
    		}
    
    		return dateString;
    	}
    
    	/**
    	 * 方法 getBeforeDate 得到与指定日期之前相差指定天数的日期
    	 * 
    	 * @param baseDate
    	 *            时间字符串,如:2001-07-17 11:00:00
    	 * @param dayCount
    	 *            向前的天数
    	 * @return 相减后的日期字符串
    	 */
    	public static String getBeforeDate(String baseDate, int dayCount) {
    		return getAfterDate(baseDate, -dayCount);
    	}
    
    	/**
    	 * 方法 getAfterMonth 得到与指定日期相差指定月数的日期
    	 * 
    	 * @param baseDate
    	 *            时间字符串,如:2001-07-17 11:00:00
    	 * @param monthCount
    	 *            向前或向后的月数,向后为正数,向前为负值
    	 * @return 相加后的日期字符串
    	 */
    	public static String getAfterMonth(String baseDate, int monthCount) {
    		int year = Integer.parseInt(baseDate.substring(0, 4));
    		int month = Integer.parseInt(baseDate.substring(5, 7));
    		int date = Integer.parseInt(baseDate.substring(8, 10));
    
    		Calendar calendar = Calendar.getInstance();
    		calendar.set(year, month - 1, date);
    		calendar.add(Calendar.MONTH, monthCount);
    		Date _date = calendar.getTime();
    		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    		String dateString = formatter.format(_date);
    
    		return dateString;
    	}
    
    	/**
    	 * 方法 getBeforeMonth 得到与指定日期之前相差指定月数的日期
    	 * 
    	 * @param baseDate
    	 *            时间字符串,如:2001-07-17 11:00:00
    	 * @param monthCount
    	 *            向前的月数
    	 * @return 相减后的日期字符串
    	 */
    	public static String getBeforeMonth(String baseDate, int monthCount) {
    		return getAfterMonth(baseDate, -monthCount);
    	}
    
    	/**
    	 * 方法 getEndDate 得到与指定日期相差指定月数并减去一天的日期
    	 * 
    	 * @param baseDate
    	 *            时间字符串,如:2001-07-17 11:00:00
    	 * @param monthCount
    	 *            向前或向后的月数,向后为正数,向前为负值
    	 * @return 相加后的日期字符串
    	 */
    	public static String getEndDate(String baseDate, int monthCount) {
    		// int year =
    		// Integer.parseInt(baseDate.substring(0,4));
    		// int month =
    		// Integer.parseInt(baseDate.substring(5,7));
    		int day = Integer.parseInt(baseDate.substring(8, 10));
    
    		String endDate = getAfterMonth(baseDate, monthCount);
    
    		// int endYear =
    		// Integer.parseInt(endDate.substring(0,4));
    		// int endMonth =
    		// Integer.parseInt(endDate.substring(5,7));
    		int endDay = Integer.parseInt(endDate.substring(8, 10));
    
    		// 说明日期没变
    		if (endDay == day) {
    			// 月数为正则为减一天
    			if (monthCount > 0) {
    				endDate = getAfterDate(endDate, -1);
    			} else {
    				endDate = getAfterDate(endDate, 1);
    			}
    		} else { // 日期已变
    			if (monthCount < 0) {
    				endDate = getAfterDate(endDate, 1);
    			}
    		}
    
    		return endDate;
    	}
    
    	/**
    	 * 方法 getDate 得到Date型指定日期
    	 * 
    	 * @param baseDate
    	 *            时间字符串,如:2001-07-17 11:00:00
    	 * @return Date 得到Date型指定日期
    	 */
    	public static Date getDate(String baseDate) {
    		if (baseDate == null || baseDate.length() == 0)
    			return null;
    		int year = Integer.parseInt(baseDate.substring(0, 4));
    		int month = Integer.parseInt(baseDate.substring(5, 7));
    		int date = Integer.parseInt(baseDate.substring(8, 10));
    		int hour = 0;
    		int minute = 0;
    		int second = 0;
    		if (baseDate.length() >= 13)
    			hour = Integer.parseInt(baseDate.substring(11, 13));
    		if (baseDate.length() >= 16)
    			minute = Integer.parseInt(baseDate.substring(14, 16));
    		if (baseDate.length() >= 19)
    			second = Integer.parseInt(baseDate.substring(17, 19));
    
    		Calendar calendar = Calendar.getInstance();
    		calendar.set(year, month - 1, date, hour, minute, second);
    		Date _date = calendar.getTime();
    
    		return _date;
    	}
    
    	/**
    	 * 方法 getDate 得到Date型指定日期
    	 * 
    	 * @param baseDate
    	 *            时间字符串,如:20010717
    	 * @return Date 得到Date型指定日期
    	 */
    	public static Date getDateSmall(String baseDate) {
    		if (baseDate == null || baseDate.length() == 0)
    			return null;
    		int year = Integer.parseInt(baseDate.substring(0, 4));
    		int month = Integer.parseInt(baseDate.substring(4, 6));
    		int date = Integer.parseInt(baseDate.substring(6));
    		int hour = 0;
    		int minute = 0;
    		int second = 0;
    		Calendar calendar = Calendar.getInstance();
    		calendar.set(year, month - 1, date, hour, minute, second);
    		Date _date = calendar.getTime();
    
    		return _date;
    	}
    
    	public static java.sql.Date getSqlDate(String baseDate) {
    		if (baseDate == null || baseDate.length() == 0)
    			return null;
    		Date date = getDate(baseDate);
    		return new java.sql.Date(date.getTime());
    	}
    
    	/**
    	 * 方法 getDateString 得到指定样式的年月日
    	 * 
    	 * @param year
    	 *            年
    	 * @param month
    	 *            月
    	 * @param date
    	 *            日
    	 * @param patternString
    	 *            格式。如:yyyy-MM-dd HH:mm:ss EEE
    	 * @return 格式化后的字符串
    	 */
    	public static String getDateString(int year, int month, int date,
    			String patternString) {
    		String dateString = "";
    		SimpleDateFormat formatter = new SimpleDateFormat(patternString);
    		Calendar calendar = Calendar.getInstance();
    		calendar.set(year, month - 1, date);
    		Date showDate = calendar.getTime();
    		dateString = formatter.format(showDate);
    		return dateString;
    	}
    
    	/**
    	 * 方法 getDateString 得到指定样式的年月日, 对于非法数据返回当前日期样式
    	 * 
    	 * @param year
    	 *            年
    	 * @param month
    	 *            月
    	 * @param date
    	 *            日
    	 * @param patternString
    	 *            格式。如:yyyy-MM-dd HH:mm:ss EEE
    	 * @return 格式化后的字符串
    	 */
    	public static String getDateString(String year, String month, String date,
    			String patternString) {
    		return getDateString(year, month, date, patternString, true);
    	}
    
    	public static String getDateString(String year, String month, String date,
    			String patternString, boolean hasDefault) {
    		String dateString = "";
    		SimpleDateFormat formatter = new SimpleDateFormat(patternString);
    		if (hasDefault)
    			dateString = formatter.format(new Date());
    		try {
    			int y = Integer.parseInt(year);
    			int m = Integer.parseInt(month);
    			int d = Integer.parseInt(date);
    			dateString = getDateString(y, m, d, patternString);
    		} catch (Exception e) {
    		}
    
    		return dateString;
    	}
    
    	public static String getDateString(String date, String patternString) {
    		if (date == null)
    			return "";
    		if (date.length() < 10)
    			return "";
    		SimpleDateFormat formatter = new SimpleDateFormat(patternString,
    				Locale.ENGLISH);
    		return formatter.format(getDate(date));
    	}
    
    	/**
    	 * Convert a date object to String with specified format. See API document
    	 * of java.text.SimpleDateFormat for detail description of format pattern.
    	 * Return empty string if parameter date is null.
    	 * 
    	 * @param _date
    	 * @param patternString
    	 * @return String
    	 */
    	public static String getDateString(Date _date, String patternString) {
    		String dateString = "";
    		if (_date != null) {
    			SimpleDateFormat formatter = new SimpleDateFormat(patternString);
    			dateString = formatter.format(_date);
    		}
    		return dateString;
    	}
    
    	public static String getBeforeMonth(int monthCount) {
    
    		Calendar calendar = Calendar.getInstance();
    		calendar.add(Calendar.MONTH, monthCount);
    		Date _date = calendar.getTime();
    		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    
    		return formatter.format(_date);
    	}
    
    	public static String getHoursOfDay(String day) {
    		String st = "";
    		try {
    			st = Float.parseFloat(day) * 24 + "";
    		} catch (NumberFormatException ex) {
    		}
    		return st;
    	}
    
    	public static String getDayOfHours(String hours) {
    		String st = "";
    		try {
    			st = (Float.parseFloat(hours) / 24.0) + "";
    		} catch (NumberFormatException ex) {
    		}
    		return st;
    
    	}
    
    	/**
    	 * 方法 getAfterDate 得到与指定日期相差指定天数的日期
    	 * 
    	 * @param patternString
    	 *            时间字符串,如:2001-07-17 11:00:00
    	 * @param dayCount
    	 *            向前或向后的天数,向后为正数,向前为负值
    	 * @return String 处理后的日期字符串
    	 */
    	public static String getAfterToday(int dayCount, String patternString) {
    
    		Calendar calendar = Calendar.getInstance();
    
    		calendar.add(Calendar.DATE, dayCount);
    		Date _date = calendar.getTime();
    		SimpleDateFormat formatter = new SimpleDateFormat(patternString);
    		String dateString = formatter.format(_date);
    
    		return dateString;
    	}
    
    	/**
    	 * 将string类型转换为date类型
    	 * 
    	 * @param dateStr
    	 *            2007-10-10
    	 * @return
    	 * @throws Exception
    	 */
    	public static Date getDateByString(String dateStr) {
    		try {
    			return getDate(dateStr, "yyyy-MM-dd");
    		} catch (Exception e) {
    			return null;
    		}
    	}
    
    	public static String getCurrentDate(String patten) {
    		SimpleDateFormat formatter = new SimpleDateFormat(patten);
    		String date = formatter.format(new Date(System.currentTimeMillis()));
    		return date;
    	}
    
    	public static String getDateStr(String patten) {
    		SimpleDateFormat formatter = new SimpleDateFormat(patten);
    		String date = "";
    		date = formatter.format(new Date(System.currentTimeMillis()));
    		return date;
    	}
    
    	/**
    	 * 将字符日期型数据按照指定的格式解析成日期对象
    	 * 
    	 * @param dateStr
    	 *            2007-10-10 / 2007/10/10
    	 * @param patten
    	 *            yyyy-MM-dd / yyyy/MM/dd
    	 * @return
    	 */
    	public static Date getDate(String dateStr, String patten) {
    		SimpleDateFormat formatter = new SimpleDateFormat(patten);
    		try {
    			return formatter.parse(dateStr);
    		} catch (ParseException e) {
    			return null;
    		}
    	}
    
    	/**
    	 * 获得格式化日期之后的 long数据值
    	 * 
    	 * @param dateStr
    	 * @param patten
    	 * @return
    	 * @throws Exception
    	 */
    	public static long getDateOfLong(String dateStr, String patten)
    			throws Exception {
    		return getDate(dateStr, patten).getTime();
    	}
    
    	/**
    	 * 获得格式化日期之后的 String数据值
    	 * 
    	 * @param dateLong
    	 * @param patten
    	 * @return
    	 * @throws Exception
    	 */
    	public static String getDateOfString(Long dateLong, String patten)
    			throws Exception {
    		if (dateLong != null) {
    			return (new SimpleDateFormat(patten).format(new Date(dateLong
    					.longValue()))).toString();
    		}
    		return "";
    	}
    
    	/**
    	 * 将string的日期类型转换为long类型
    	 * 
    	 * @param dateStr
    	 *            2007-10-10
    	 * @return
    	 * @throws Exception
    	 */
    	public static long getDateOfLong(String dateStr) throws Exception {
    		Date dt = getDateByString(dateStr);
    		return dt.getTime();
    	}
    
    	/**
    	 * 获得long型当前日期
    	 * 
    	 * @return
    	 * @throws Exception
    	 */
    	public static long getCurrenTimeOfLong() {
    		Calendar calendar = Calendar.getInstance();
    		return calendar.getTime().getTime();
    	}
    
    	/**
    	 * Convert java.util.Date object to java.sql.Date object.
    	 * 
    	 * @param date
    	 * @return Date
    	 */
    	public static java.sql.Date UtilDateToSQLDate(Date date) {
    		return new java.sql.Date(date.getTime());
    	}
    
    	/**
    	 * 验证输入的文本信息日期是否合法
    	 * 
    	 * @param inputDate
    	 * @return
    	 */
    	public static Date isDate(String dateStr) {
    		String date_format_1 = "yyyy/MM/dd";
    		String date_format_2 = "yyyy-MM-dd";
    		String date_format_3 = "yyyyMMdd";
    		String date_format_4 = "yyyy.MM.dd";
    		String[] date_format = { date_format_1, date_format_2, date_format_3,
    				date_format_4 };
    		for (int i = 0; i < date_format.length; i++) {
    			try {
    				SimpleDateFormat formatDate = new SimpleDateFormat(
    						date_format[i]);
    				formatDate.setLenient(false);
    				ParsePosition pos = new java.text.ParsePosition(0);
    				Date tempDate = formatDate.parse(dateStr, pos);
    				tempDate.getTime();
    				return tempDate;
    			} catch (Exception e) {
    			}
    		}
    		return null;
    	}
    
    	/**
    	 * <p>
    	 * 返回calendar ,传入date
    	 * </p>
    	 * 
    	 * @author Jack Zhou
    	 * @version $Id: DateUtil.java,v 0.1 Jul 2, 2008 12:36:59 PM Jack Exp $
    	 */
    	public static Calendar getCalendar(Date d) {
    		Calendar cal = Calendar.getInstance();
    		cal.setTime(d);
    		return cal;
    	}
    
    	/**
    	 * <p>
    	 * 返回时分秒的long类型
    	 * </p>
    	 * 
    	 * @author Jack Zhou
    	 * @version $Id: DateUtil.java,v 0.1 Jul 2, 2008 12:36:39 PM Jack Exp $
    	 */
    	public static Long getHMSLong(Calendar c) {
    		int ap = c.get(Calendar.AM_PM);
    		int h = c.get(Calendar.HOUR);
    		if (ap == 1)
    			h = h + 12;
    		int m = c.get(Calendar.MINUTE);
    		int s = c.get(Calendar.SECOND);
    		return (long) (s + m * 60 + h * 60 * 60);
    	}
    
    	public static boolean compare(String hm) throws Exception {
    		Date dat = getDate(getDateString(new Date(), "yyyyMMdd") + " " + hm,
    				"yyyyMMdd HH:mm");
    		if (new Date().getTime() > dat.getTime()) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    
    	public static Date getDateFromStr(String baseDate) {
    		if (baseDate == null || baseDate.length() == 0)
    			return null;
    		int year = Integer.parseInt(baseDate.substring(0, 4));
    		int month = Integer.parseInt(baseDate.substring(4, 6));
    		int date = Integer.parseInt(baseDate.substring(6, 8));
    		int hour = 0;
    		int minute = 0;
    		int second = 0;
    		if (baseDate.length() >= 10)
    			hour = Integer.parseInt(baseDate.substring(8, 10));
    		if (baseDate.length() >= 12)
    			minute = Integer.parseInt(baseDate.substring(10, 12));
    		if (baseDate.length() >= 14)
    			second = Integer.parseInt(baseDate.substring(12, 14));
    
    		Calendar calendar = Calendar.getInstance();
    		calendar.set(year, month - 1, date, hour, minute, second);
    		Date _date = calendar.getTime();
    
    		return _date;
    	}
    
    	public static void main(String[] args) throws Exception {
    		Date date = DateUtil.getDateFromStr("20090304005743");
    		System.out.println(DateUtil.getDateString(date,
    				DateUtil.FILE_INDENTIFY_FORMAT));
    	}
    }
    
     
  • 相关阅读:
    如何找按钮数组在布局中的横竖坐标位置?
    java中使用rmi进行远程方法调用
    测试视频集,各种测试用的视频文件
    如何彻底禁用VS 2008的智能感知功能
    JavaScript秘密花园 Type Casting,undefined,eval,setTimeout,Auto Semicolon Insertion
    JavaScript秘密花园 scope, namespace, constructor, equality and comparisons
    造成内存位置访问无效的一个原因
    depends在VS2008消失了
    12月10日晚的月全食照片
    JavaScript秘密花园 Array, Array Constructor, for in loop, typeof, instanceOf
  • 原文地址:https://www.cnblogs.com/qq1988627/p/6606929.html
Copyright © 2020-2023  润新知