- 最近用Java做会员卡业务用到对时间的操作,下面再简单总结一下
需求:
①.从用户获取会员卡,会员卡开始生效并设置有效期为一个月(或两个月等自定义有效期时间)
②.根据会员卡的开始时间和结束时间,获取这段时间的有效天数
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Month;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.Date;
public class DateTest {
public static void main(String[] args) throws ParseException {
//最近用Java做会员卡业务用到对时间的操作,下面再简单总结一下
/**需求:
* 1.从用户获取会员卡,会员卡开始生效并设置有效期为一个月(或两个月等自定义有效期时间)
* 2.根据会员卡的开始时间和结束时间,获取这段时间的有效天数
*/
//Calendar calendar = new GregorianCalendar();
Calendar calendar = Calendar.getInstance();
Date startTime = new Date();//开始时间
calendar.setTime(new Date());
calendar.add(calendar.DATE, 31);//设置有效期一个月
// calendar.add(calendar.MONTH,1);
Date endTime = calendar.getTime();//结束时间 31天后的日期
//格式化日期显示 SimpleDateFormat
String strDateFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
System.out.println(sdf.format(startTime));
System.out.println(sdf.format(endTime));
/**
* 创建指定日期
*/
String strFormat = "yyyy-MM-dd";
SimpleDateFormat strSdf = new SimpleDateFormat(strFormat);
Date speDate = strSdf.parse("2021-08-30");
Date speDate1 = strSdf.parse("2021-09-30");
System.out.println(sdf.format(speDate));
System.out.println(sdf.format(speDate1));
/**
* java获取指定日期的年、月、日的值
*/
String dateStr = "2016-05-18";
//1、获取string对应date日期:
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr);
//2、获取date对应的Calendar对象
Calendar ca = Calendar.getInstance();
ca.setTime(date);
//3、可以从ca中获取各种该日期的属性值:
int day = ca.get(Calendar.DAY_OF_YEAR);//一年中的第几天
int week = ca.get(Calendar.WEEK_OF_YEAR);//一年中的第几周
int month = ca.get(Calendar.MONTH);//第几个月
int year = ca.get(Calendar.YEAR);//年份数值
/**
* 获取两个时间相差的天数
*/
LocalDate startDate = LocalDate.of(2017, Month.DECEMBER, 5);
LocalDate endDate = LocalDate.of(2017, Month.DECEMBER, 20);
System.out.println(until(startDate));
System.out.println(until(startDate, endDate));
}
/**
* 计算当前日期与{@code endDate}的间隔天数
*
* @param endDate
* @return 间隔天数
*/
static long until(LocalDate endDate) {
return LocalDate.now().until(endDate, ChronoUnit.DAYS);
}
/**
* 计算日期{@code startDate}与{@code endDate}的间隔天数
*
* @param startDate
* @param endDate
* @return 间隔天数
*/
static long until(LocalDate startDate, LocalDate endDate) {
return startDate.until(endDate, ChronoUnit.DAYS);
}
}
参考:
https://www.cnblogs.com/zhoujl-5071/p/date.html
https://blog.csdn.net/yx0628/article/details/79317440
https://blog.csdn.net/kevin_mails/article/details/78440696