public static void main(String[] args) {
// 方式一
int endTime = currentSeconds() - currentSeconds() % 3600;
int startTime = endTime - 3600;
System.out.println("startTime => " + formatTime(startTime));
System.out.println("endTime => " + formatTime(endTime));
System.out.println("----------------------------------");
// 方式二
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
int hourTime = (int) (calendar.getTimeInMillis() / 1000);
System.out.println(formatTime(hourTime));
* 格式时间戳
* @param timeStamp 十位时间戳
private static String formatTime(Integer timeStamp) {
Date date = new Date(Long.parseLong(timeStamp + "000"));
String strDateFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
return sdf.format(date);
* 返回当前时间戳
* @return 十位时间戳
private static int currentSeconds() {
return (int) (System.currentTimeMillis() / 1000);
public class TimeStampTest {
public static void main(String[] args) {
System.out.println(formatTime(getLastHourTime(1)));
System.out.println(formatTime(getLastHourTime(2)));
* 获取上n个小时整点小时的时间戳
* @param n 往前几个小时
* @return 十位时间戳
public static Integer getLastHourTime(int n) {
Calendar ca = Calendar.getInstance();
ca.set(Calendar.MINUTE, 0);
ca.set(Calendar.SECOND, 0);
ca.set(Calendar.HOUR_OF_DAY, ca.get(Calendar.HOUR_OF_DAY) - n);
return (int) (ca.getTimeInMillis() / 1000);
* 格式时间戳
* @param timeStamp 十位时间戳
private static String formatTime(Integer timeStamp) {
Date date = new Date(Long.parseLong(timeStamp + "000"));
String strDateFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
return sdf.format(date);
https://www.cnblogs.com/lm970585581/p/9212237.html
Java中获取整点时间戳
在实际的开发过程中,前端给后端传时间的时候,有时候传的是整点数值,比如:timeList=[00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24],这样传值给后端获取时间带了了一定的麻烦,首先我们需要把每一个整点转换成时间戳,在做有关时间的操作,具体做法如下:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_O
在实际的开发过程中,前端给后端传时间的时候,有时候传的是整点数值,比如:timeList=[00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24],这样传值给后端获取时间带了了一定的麻烦,首先我们需要把每一个整点转换成时间戳,在做有关时间的操作,具体做法如下:
Calendar cal = Calen
public static void main(String[] args) throws ParseException {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
int hourTime = (int) (calendar.getTimeInMillis() / 1000);
这种方法使用Calendar类获取当前时间,然后将分钟和秒数设置为0,即可得到当前整点时间的时间戳。
int endTime = currentSeconds() - currentSeconds() % 3600;
这种方法使用当前时间戳减去当前时间戳对3600取余的结果,即可得到当前整点时间的时间戳。
需要注意的是,以上两种方法得到的时间戳都是以秒为单位的,如果需要将时间戳转换为日期格式,可以使用formatTime方法进行格式化。