万能的时间转换工具类

最近在项目中遇到了时间换算的问题,特意复习了一下,做个总结

写了一个关于时间的工具类,平常遇到关于时间转换的问题都可以解决

package com.zknw.util;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * 工具类模块 --Date处理
 * 
 * @author wzx1235
 * @since 1.0
 */
public class DateTools {

	private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	/**
	 * 得到日期时间字符串 精确到秒
	 */
	public static String format(Long time) {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return df.format(new Date(time));
	}

	/**
	 * 描述:日期转换为字都串 wang 2016年10月8日 下午3:02:20
	 *
	 * @param date
	 * @return
	 *
	 */
	public static String ConverToString(Date date) {
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return df.format(date);
	}

	/**
	 * 根据字符串日期获取日期类型
	 * @param timestr
	 * @return
	 */
	public static Date paraseStringToDate(String timestr)//将字符串转化为日期
	{
		Date date=null;
		Format f = new SimpleDateFormat("yyyy-MM-dd");
		try {
			date = (Date) f.parseObject(timestr);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 获取每个月的开始时间
	 * @param date
	 * @return
	 */
	public static Date getMonthStart(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		int index = calendar.get(Calendar.DAY_OF_MONTH);
		calendar.add(Calendar.DATE, (1 - index));
		return calendar.getTime();
	}

	/**
	 * 获取每个月的结束时间
	 * @param date
	 * @return
	 */
	public static Date getMonthEnd(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.MONTH, 1);
		int index = calendar.get(Calendar.DAY_OF_MONTH);
		calendar.add(Calendar.DATE, (-index));
		return calendar.getTime();
	}

	/**
	 * 获取下一天
	 * @param date
	 * @return
	 */
	public static Date getNext(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.DATE, 1);
		return calendar.getTime();
	}

	/**
	 * 获取天
	 * @param date
	 * @return
	 */
	public static int getDay(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.DAY_OF_MONTH);
	}
	/**
	 * 获取月
	 * @param date
	 * @return
	 */
	public static int getMonth(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.MONTH)+1;
	}
	/**
	 * 获取时
	 * @param date
	 * @return
	 */
	public static int getHour(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.HOUR_OF_DAY);
	}

	/**
	 * 获取分
	 * @param date
	 * @return
	 */
	public static int getMinute(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.MINUTE);
	}
	/**
	 * 获取秒
	 * @param date
	 * @return
	 */
	public static int getSecond(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.SECOND);
	}
	/**
	 * 获取年
	 * @param date
	 * @return
	 */
	public static int getYear(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.YEAR);
	}

	/**
	 * 获取年
	 * @param date
	 * @return
	 */
	public static int getTimeMillisOfDay(Date date) throws Exception {
		int year = DateTools.getYear(date);
		int month = DateTools.getMonth(date);
		int day = DateTools.getDay(date);
		String zeorTime= DateTools.getNewDate(year,month,day,0,0,0);
		long m= DateTools.ConverToDate(zeorTime).getTime();
		long m1=date.getTime();
		return (int)(m1-m);
	}



	/**
	 * 获取传入月份的所有日期
	 * @param d
	 * @return
	 */
	public static List<String> getAllDaysMonthByDate(Date d)//根据传入的日期获取所在月份所有日期
	{
		List<String> lst=new ArrayList<String>();
		Date date = getMonthStart(d);
		Date monthEnd = getMonthEnd(d);
		while (!date.after(monthEnd)) {
			//System.out.println(sdf.format(date));
			lst.add(sdf.format(date));
			date = getNext(date);
		}
		return lst;
	}

	/**
	 * 描述:日期转换为字都串 wang 2016年10月8日 下午3:02:20
	 * @param date
	 * @return
	 */
	public static String ConverToStrings(Date date) {
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		return df.format(date);
	}

	/**
	 * 描述:字符串转换为日期 wang 2016年10月8日 下午3:02:54
	 * @param strDate
	 * @return
	 * @throws Exception
	 */
	public static Date ConverToDate(String strDate) throws Exception {
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return df.parse(strDate);
	}

	/**
	 * 描述:日期转换为字符串 wang 2016年10月8日 下午3:03:22
	 *
	 * @param date
	 * @param pattern
	 * @return
	 * @throws ParseException
	 */
	public static String ConverToString(Date date, String pattern) throws ParseException {
		DateFormat format = new SimpleDateFormat(pattern);
		return format.format(date);
	}

	/**
	 * 描述:字符串转换为日期 wang 2016年10月8日 下午3:04:09
	 *
	 * @param strDate
	 * @param pattern
	 * @return
	 * @throws ParseException
	 */
	public static Date ConverToDate(String strDate, String pattern) throws ParseException {
		DateFormat format = new SimpleDateFormat(pattern);
		return format.parse(strDate);
	}

	/**
	 * 描述:返回给定日期的后N天的日期 作者:wang
	 *
	 * @param date
	 * @param n
	 * @return 下午3:21:39
	 */
	public static Date getAfter(Date date, int n) {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal = Calendar.getInstance();
		try {
			cal.setTime(format.parse(format.format(date)));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		cal.add(Calendar.DATE, n);
		return cal.getTime();
	}

	/**
	 * 描述:根据日期获取星期几,0-6 作者:wang
	 * @param dt
	 * @return 下午3:26:52
	 */
	public static int getWeekNumOfDate(Date dt) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(dt);
		int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
		if (week < 0) {
			week = 0;
		}
		return week;
	}

	/**
	 * 转换为时间戳
	 * @param dates
	 * @param time
	 * @return
	 */
	public static String ConvertToTimestamp(String dates, String time) {
		String dtime = "";
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			Date date = df.parse(dates + " " + time);
			dtime = String.valueOf(date.getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return dtime;
	}

	/**
	 * 日期时区格式转换 yk
	 * @param datest
	 * @return
	 */
	public static String dateTimeZone(String datest) throws ParseException {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z");
		//注意是空格+UTC
		Date d = format.parse(datest.replace("Z", " UTC"));
		return ConverToString(d);
	}

	/**
	 * 根据年获取每个月
	 * @return
	 */
	public static List<String> getEachMonthr(Integer in) {
		List<String> stringList = new ArrayList<String>();
		Date d1 = null;//定义起始日期
		Date d2 = null;
		try {
			d1 = new SimpleDateFormat("yyyy").parse(in.toString());
			d2 = new SimpleDateFormat("yyyy").parse(String.valueOf(in.intValue()+1));//定义结束日期
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Calendar dd = Calendar.getInstance();//定义日期实例
		dd.setTime(d1);//设置日期起始时间
		while (dd.getTime().before(d2)) {//判断是否到结束日期
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			String str = sdf.format(dd.getTime());
			//System.out.println(str);//输出日期结果
			stringList.add(str);
			dd.add(Calendar.MONTH, 1);//进行当前日期月份加1
		}
		return stringList;
	}

	public static String StringFormatDate(Date date) {
		DateFormat df = new SimpleDateFormat("yyyy年MM月dd号HH:mm分");
		return df.format(date);
	}

	//获取当天的开始时间
	public static String getDayBegin() {
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal = new GregorianCalendar();
		cal.set(Calendar.HOUR_OF_DAY, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return df.format(cal.getTime());
	}

	//获取某日期所在年的开始时间
		public static String getBeginDayOfYear(Date date) {
			GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
			gc.setTime(date);
			DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
			Calendar cal = Calendar.getInstance();
			cal.set(Calendar.YEAR, Integer.valueOf(gc.get(1)));
			cal.set(Calendar.MONTH, Calendar.JANUARY);
			cal.set(Calendar.DATE, 1);
			return df.format(getDayStartTime(cal.getTime()));
		}

	//获取本年的开始时间
	public static String getBeginDayOfYear() {
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, getNowYear());
		cal.set(Calendar.MONTH, Calendar.JANUARY);
		cal.set(Calendar.DATE, 1);
		return df.format(getDayStartTime(cal.getTime()));
	}

	//获取今年是哪一年
	public static Integer getNowYear() {
		Date date = new Date();
		GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
		gc.setTime(date);
		return Integer.valueOf(gc.get(1));
	}

	//获取当前月是哪一月
	public static int getNowMonth() {
		Date date = new Date();
		GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
		gc.setTime(date);
		return gc.get(2) + 1;
	}

	//获取某个日期的开始时间
	public static Timestamp getDayStartTime(Date d) {
		Calendar calendar = Calendar.getInstance();
		if (null != d) calendar.setTime(d);
		calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
		calendar.set(Calendar.MILLISECOND, 0);
		return new Timestamp(calendar.getTimeInMillis());
	}

	//获取当前月的开始时间
	public static String getBeginDayOfMonth() {
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Calendar calendar = Calendar.getInstance();
		calendar.set(getNowYear(), getNowMonth() - 1, 1);
		return df.format(getDayStartTime(calendar.getTime()));
	}
		

	//得到本月第一天的日期  
	//@Methods Name getFirstDayOfMonth 
	//@return Date    
	public static String getFirstDayOfMonth(Date date){
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cDay = Calendar.getInstance();
		cDay.setTime(date);
		cDay.set(Calendar.DAY_OF_MONTH, 1);
		System.out.println(cDay.getTime());
		return df.format(getDayStartTime(cDay.getTime()));
	}
	
	//得到本月最后一天的日期 
	//@Methods Name getLastDayOfMonth 
	//@return Date   
	public static Date getLastDayOfMonth(Date date){
		Calendar cDay = Calendar.getInstance();
		cDay.setTime(date);
		cDay.set(Calendar.DAY_OF_MONTH,cDay.getActualMaximum(Calendar.DAY_OF_MONTH));
		System.out.println(cDay.getTime());
		return cDay.getTime();
	}
	
	/** 
     * 得到本季度第一天的日期 
     * @Methods Name getFirstDayOfQuarter 
     * @return Date 
     */
	public static Date getFirstDayOfQuarter(Date date){
		Calendar cDay = Calendar.getInstance();
		cDay.setTime(date);
		int curMonth = cDay.get(Calendar.MONTH);
		
		if(curMonth >= Calendar.JANUARY && curMonth <= Calendar.MARCH){
			cDay.set(Calendar.MONTH, Calendar.JANUARY);
		}
		
		if(curMonth >= Calendar.APRIL && curMonth <= Calendar.JUNE){
			cDay.set(Calendar.MONTH, Calendar.APRIL);
		}
		
		if (curMonth >= Calendar.JULY && curMonth <= Calendar.AUGUST){
			cDay.set(Calendar.MONTH, Calendar.JULY);
		}
		
		if(curMonth >= Calendar.OCTOBER && curMonth <= Calendar.DECEMBER){
			cDay.set(Calendar.MONTH,Calendar.OCTOBER);
		}
		
		cDay.set(Calendar.DAY_OF_MONTH, cDay.getActualMinimum(Calendar.DAY_OF_MONTH));
		return cDay.getTime();
	}
	
	
	/** 
	     * 得到本季度最后一天的日期 
	     * @Methods Name getLastDayOfQuarter 
	     * @return Date 
	     */
	public static Date getLastDayOfQuarter(Date date){
		Calendar cDay = Calendar.getInstance();
		cDay.setTime(date);
		int curMonth = cDay.get(Calendar.MONTH);
		if (curMonth >= Calendar.JANUARY && curMonth <= Calendar.MARCH){
			cDay.set(Calendar.MONTH, Calendar.MARCH);
		}
		
		if (curMonth >= Calendar.APRIL && curMonth <= Calendar.JUNE){
			cDay.set(Calendar.MONTH, Calendar.JUNE);
		}
		
		if (curMonth >= Calendar.JULY && curMonth <= Calendar.AUGUST){
			cDay.set(Calendar.MONTH, Calendar.AUGUST);
		}
		
		if (curMonth >= Calendar.OCTOBER && curMonth <= Calendar.DECEMBER){
			cDay.set(Calendar.MONTH, Calendar.DECEMBER);
		}
		
		cDay.set(Calendar.DAY_OF_MONTH, cDay.getActualMaximum(Calendar.DAY_OF_MONTH));
		System.out.println(cDay.getTime());
		return cDay.getTime();
	}
	
	
	

	 /* 获取某年第一天日期
	 * @param year 年份
	 * @return String
	 */
	public static String getYearFirst(int year){
		Calendar calendar = Calendar.getInstance();
		calendar.clear();
		calendar.set(Calendar.YEAR, year);
		return ConverToStrings(calendar.getTime());
	}

	/* 获取某年第一天日期
	 * @param year 年份
	 * @return String
	 */
	public static String getYearFirst(String year){
		DateFormat df = new SimpleDateFormat("yyyy");
		String st = df.format(year);
		Calendar calendar = Calendar.getInstance();
		calendar.clear();
		calendar.set(Calendar.YEAR,Integer.valueOf(st));
		return ConverToStrings(calendar.getTime());
	}

	/**
	 * 获取某年最后一天日期
	 * @param year 年份
	 * @return String
	 */
	public static String getYearLast(int year){
		Calendar calendar = Calendar.getInstance();
		calendar.clear();
		calendar.set(Calendar.YEAR, year);
		calendar.roll(Calendar.DAY_OF_YEAR, -1);
		return ConverToStrings(calendar.getTime());
	}

	/**
	 * 根据STRING 获取当月的开始日期
	 * @throws ParseException
	 */
	public static String getMonthStart(String st){
		return ConverToStrings(getMonthStart(paraseStringToDate(st)));
	}

	/**
	 * 根据STRING 获取当月的结束日期
	 * @throws ParseException
	 */
	public static String getMonthEnd(String st){
		return ConverToStrings(getMonthEnd(paraseStringToDate(st)));
	}
	/**
	 * 获取指定日期时间字符串(例如:2017-09-21 17:18:00)
	 * @return
	 */
	public static String getNewDate(int year,int month,int day,int hour,int minute,int second ) {
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Calendar calendar = Calendar.getInstance();
		calendar.set(year, month-1, day);
		calendar.set(Calendar.HOUR_OF_DAY, hour);
		calendar.set(Calendar.MINUTE, minute);
		calendar.set(Calendar.SECOND, second);
		calendar.set(Calendar.MILLISECOND, 0);
		Date zero = calendar.getTime();
		return  df.format(zero);
	}
	/**
	 * 根据开始时间和正负的时间间隔(毫秒)获取指定日期时间字符
	 * @throws Exception
	 */
	public static String getNewDate(Date startTime,Integer interval)throws Exception{
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Long time= startTime.getTime()+interval;
		Date result=new Date(time);
		return df.format(result);
	}


	/**
	 * 根据当前时间获取 当前的0点
	 * @throws ParseException
	 */
	public static String getTimeZero(String st) throws Exception {
		long s = ConverToDate(st).getTime()/(1000*3600*24)*(1000*3600*24)-TimeZone.getDefault().getRawOffset();
		return format(s);
	}

	/**
	 * 根据当前时间获取 23点
	 * @throws Exception
	 */
	public static String getTimeTwelve(String st) throws Exception {
		long s = ConverToDate(st).getTime()/(1000*3600*24)*(1000*3600*24)-TimeZone.getDefault().getRawOffset();
		return format(s+24*60*60*1000-1);
	}

	/**
	 *
	 * @throws Exception
	 */
	public static String getTimeByTimeSpan(Date time,Long timeSpan) throws Exception {
		long millSec=time.getTime()+timeSpan;
		Date date = new Date(millSec);
		return ConverToString(date) ;
	}
	/**
	 *
	 * @throws Exception
	 */
	public static String getTimeByTimeSpan(String time,Long timeSpan) throws Exception {
		Date dateTime=ConverToDate(time);
		long millSec=dateTime.getTime()+timeSpan;
		Date date = new Date(millSec);
		return ConverToString(date);
	}


	/**
	 * 两个时间之间相错几个小时
	 * @throws Exception
	 */
	public static BigDecimal getTimeDifferenceHour(String startTime,String endTime) throws Exception {
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			Date d1 = df.parse(endTime);
			Date d2 = df.parse(startTime);
		    BigDecimal b = new BigDecimal(d1.getTime()-d2.getTime());
			BigDecimal a = new BigDecimal(60*60*1000);
			return b.divide(a, 2, RoundingMode.HALF_UP);
	}




	/**
	 * 根据年获取每个月
	 * @return
	 */
	public static List<String> getEachMonthLest(Integer in) {
		List<String> stringList = new ArrayList<String>();
		Date d1 = null;//定义起始日期
		Date d2 = null;
		try {
			d1 = new SimpleDateFormat("yyyy").parse(in.toString());
			d2 = new SimpleDateFormat("yyyy").parse(String.valueOf(in.intValue()+1));//定义结束日期
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Calendar dd = Calendar.getInstance();//定义日期实例
		dd.setTime(d1);//设置日期起始时间
		while (dd.getTime().before(d2)) {//判断是否到结束日期
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			String str = sdf.format(dd.getTime());
			//System.out.println(str);//输出日期结果
			stringList.add(getMonthEnd(str));
			dd.add(Calendar.MONTH, 1);//进行当前日期月份加1
		}
		return stringList;
	}


	public static List<String> getEachDayOfMonth(Integer year,Integer month) throws  Exception {
		List<String> stringList = new ArrayList<String>();
		Calendar dd1 = Calendar.getInstance();//定义日期实例
		dd1.set(year,month-1,1);
		int days= dd1.getActualMaximum(Calendar.DAY_OF_MONTH);
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		for (int day=0;day<days;day++){
			String date=getNewDate(year,month-1,day+1,0,0,0);
			stringList.add(df.format(ConverToDate(date)));
		}
		return  stringList;
	}
	/**
	 * 获取两个日期之间的所有日期(yyyy-MM-dd)
	 * @Description TODO
	 * @param begin
	 * @param end
	 * @return
	 * @date 2017-4-1
	 */
	public static List<String> getBetweenDates(String begin, String end) throws Exception {
		List<String> result = new ArrayList<String>();
		Calendar tempStart = Calendar.getInstance();
		Date startTime = DateTools.ConverToDate(begin,"yyyy-MM-dd");
		Date endTime = DateTools.ConverToDate(end,"yyyy-MM-dd");
		tempStart.setTime(startTime);
		while(startTime.getTime()<=endTime.getTime()){
			result.add(DateTools.ConverToString(tempStart.getTime(),"yyyy-MM-dd"));
			tempStart.add(Calendar.DAY_OF_YEAR, 1);
			startTime = tempStart.getTime();
		}
		return result;
	}
	/**
	 * 获取两个日期之间的所有月份(yyyy-MM-dd)
	 * @Description TODO
	 * @param minDate
	 * @param maxDate
	 * @return
	 * @date 2017-4-1
	 */
	public static List<String> getMonthBetween(String minDate, String maxDate) throws ParseException {
		ArrayList<String> result = new ArrayList<String>();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//格式化为年月

		Calendar min = Calendar.getInstance();
		Calendar max = Calendar.getInstance();

		min.setTime(sdf.parse(minDate));
		min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);

		max.setTime(sdf.parse(maxDate));
		max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);

		Calendar curr = min;
		while (curr.before(max)) {
			result.add(sdf.format(curr.getTime()));
			curr.add(Calendar.MONTH, 1);
		}

		return result;
	}

	public static List<String> getYearBetween(String minDate, String maxDate) throws ParseException {
		ArrayList<String> result = new ArrayList<String>();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//格式化为年月

		Calendar min = Calendar.getInstance();
		Calendar max = Calendar.getInstance();

		min.setTime(sdf.parse(minDate));
		min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);

		max.setTime(sdf.parse(maxDate));
		max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);

		Calendar curr = min;
		while (curr.before(max)) {
			result.add(sdf.format(curr.getTime()));
			curr.add(Calendar.YEAR, 1);
		}

		return result;
	}

	public static String ConverStringToString(String st) throws Exception {
		return ConverToString(ConverToDate(st));
	}

	public static void main(String[] args) throws Exception {
        String dt1 = "2018-05-05";
        String dt2 = "2018-05-05";
        String month1 = dt1.substring(0,dt1.lastIndexOf("-"));
        String month2 = dt2.substring(0,dt2.lastIndexOf("-"));
        System.out.println(month1+month2);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值