java写一个工具类,输入yyyy-MM-dd格式的时间,返回输入时间季度的开始时间戳和结束时间戳,时间戳为毫秒
时间: 2024-02-28 10:53:36 浏览: 67
好的,我给您编写一个工具类,具体实现如下:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
/**
* 获取时间戳的方法
*
* @param dateStr 时间字符串,格式为"yyyy-MM-dd"
* @param type 1表示开始时间戳,2表示结束时间戳
* @return 时间戳(毫秒)
*/
public static Long getTime(String dateStr, int type) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(dateStr);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// 获取年份
int year = calendar.get(Calendar.YEAR);
// 获取月份
int month = calendar.get(Calendar.MONTH) + 1;
// 计算季度
int quarter = (int) Math.ceil(month / 3.0);
// 获取季度开始月份
int startMonth = (quarter - 1) * 3 + 1;
// 获取季度结束月份
int endMonth = startMonth + 2;
// 设置开始时间戳
if (type == 1) {
calendar.set(year, startMonth - 1, 1, 0, 0, 0);
} else { // 设置结束时间戳
calendar.set(year, endMonth - 1, 1, 23, 59, 59);
// 获取月份的最大天数
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
// 设置日期为月份的最后一天
calendar.set(Calendar.DAY_OF_MONTH, maxDay);
}
return calendar.getTimeInMillis();
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
String dateStr = "2022-09-10";
Long startTimeStamp = getTime(dateStr, 1);
Long endTimeStamp = getTime(dateStr, 2);
System.out.println("季度开始时间戳:" + startTimeStamp);
System.out.println("季度结束时间戳:" + endTimeStamp);
}
}
```
该工具类中的 `getTime` 方法接收两个参数,第一个参数是时间字符串,格式为"yyyy-MM-dd",第二个参数是一个整数,表示要获取季度的开始时间戳还是结束时间戳,1表示开始时间戳,2表示结束时间戳。方法会先将时间字符串转换成 `Date` 类型,然后获取年份、月份和季度等信息,计算季度开始月份和结束月份,最后根据参数类型设置时间戳。调用 `getTime` 方法,即可获取指定时间所在季度的开始时间戳和结束时间戳。
阅读全文