Java中时间格式处理,指定N天/小时等之后的时间

1)根据当前时间,获取具体的时刻的时间

N天前

M小时之前

可用

new Date().getTime() - 24 * 60 * 60 * 1000*N【N天之前】的方法来获取处理时间之后的具体的值,最终转化为想要的时间格式
import java.text.SimpleDateFormat;
import java.util.Date;

public class getTime {

    public static void main(String[] args) {

        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date time = new Date(new Date().getTime() - 24 * 60 * 60 * 1000);
        System.out.println(sd.format(time));
        System.out.println(sd.format(new Date()));

        //想获得N天之前或M天之后的时间
        int NDay = 5;
        int MDay = -10; //之后就传负数

        Date timeN = new Date(new Date().getTime() - 24 * 60 * 60 * 1000 * NDay);
        Date timeM = new Date(new Date().getTime() - 24 * 60 * 60 * 1000 * MDay);

        System.out.println(sd.format(timeN));
        System.out.println(sd.format(timeM));

        //想获得N小时之前或M小时之后的时间
        int NHour = 5;
        int MHour = -10; //之后就传负数

        Date timeNHour = new Date(new Date().getTime() - 60 * 60 * 1000 * NHour);
        Date timeMHour = new Date(new Date().getTime() - 60 * 60 * 1000 * MHour);
        System.out.println(sd.format(timeNHour));
        System.out.println(sd.format(timeMHour));

        //想获得N分钟之前或M分钟之后的时间
        int NMinute = 5;
        int MMinute = -10; //之后就传负数

        Date timeNMinute = new Date(new Date().getTime() - 60 * 1000 * NMinute);
        Date timeMMiute = new Date(new Date().getTime() - 60 * 1000 * MMinute);
        System.out.println(sd.format(timeNMinute));
        System.out.println(sd.format(timeMMiute));

        //想获得N秒之前或M秒之后的时间
        int NSecond = 5;
        int MSecond = -10; //之后就传负数

        Date timeNSecond = new Date(new Date().getTime() - 1000 * NSecond);
        Date timeMSecond = new Date(new Date().getTime() - 1000 * MSecond);
        System.out.println(sd.format(timeNSecond));
        System.out.println(sd.format(timeMSecond));

        long Ntime = getDetailtime(3, 20, 1, 1);
        System.out.println(sd.format(Ntime));
        System.out.println(Ntime);

        Date Ntime2 = getDetailDate(3, 20, 1, 1);
        System.out.println(sd.format(Ntime2));
        System.out.println(Ntime2);

    }

    public static Date getDetailDate(int Day, int Hour, int Minute, int Second) {
        Date timeN = new Date(new Date().getTime() - Day * 24 * 60 * 60 * 1000 - Hour * 60 * 60 * 1000 - Minute * 60 * 1000 - Second * 1000);
        return timeN;
    }

    public static long getDetailtime(int Day, int Hour, int Minute, int Second) {
        long timeN = new Date().getTime() - Day * 24 * 60 * 60 * 1000 - Hour * 60 * 60 * 1000 - Minute * 60 * 1000 - Second * 1000;
        return timeN;
    }

}

  那么想要更加具体的时间,比如让用户输入具体的天,时,分钟,秒等,可以获取更加精准的想要的时刻

public static Date getDetailDate(int Day, int Hour, int Minute, int Second) {
        Date timeN = new Date(new Date().getTime() - Day * 24 * 60 * 60 * 1000 - Hour * 60 * 60 * 1000 - Minute * 60 * 1000 - Second * 1000);
        return timeN;
    }

    public static long getDetailtime(int Day, int Hour, int Minute, int Second) {
        long timeN = new Date().getTime() - Day * 24 * 60 * 60 * 1000 - Hour * 60 * 60 * 1000 - Minute * 60 * 1000 - Second * 1000;
        return timeN;
    }

  

2) 根据

java.util.Calendar中的操作
ca.add(Calendar.DATE, -N);【减去N天】
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class getTime2 {

    public static void main(String[] args) {

        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        int N=2;

        Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
        ca.setTime(new Date()); //设置时间为当前时间
        ca.add(Calendar.DATE, -N);
        long timeDay= ca.getTime().getTime();

        Calendar ca2 = Calendar.getInstance();//得到一个Calendar的实例
        ca2.setTime(new Date()); //设置时间为当前时间
        ca2.add(Calendar.HOUR, -N);
        long timeDay2= ca2.getTime().getTime();

        Calendar ca3 = Calendar.getInstance();//得到一个Calendar的实例
        ca3.setTime(new Date()); //设置时间为当前时间
        ca3.add(Calendar.MINUTE, -N);
        long timeDay3= ca3.getTime().getTime();

        Calendar ca4 = Calendar.getInstance();//得到一个Calendar的实例
        ca4.setTime(new Date()); //设置时间为当前时间
        ca4.add(Calendar.SECOND, -N);
        long timeDay4= ca4.getTime().getTime();

        System.out.println(sd.format(timeDay));
        System.out.println(sd.format(timeDay2));
        System.out.println(sd.format(timeDay3));
        System.out.println(sd.format(timeDay4));

        Calendar ca5 = Calendar.getInstance();//得到一个Calendar的实例
        ca5.setTime(new Date()); //设置时间为当前时间
        ca5.add(Calendar.MONTH, -N);
        long timeDay5= ca5.getTime().getTime();
        System.out.println(sd.format(timeDay5));

        Calendar ca6 = Calendar.getInstance();//得到一个Calendar的实例
        ca6.setTime(new Date()); //设置时间为当前时间
        ca6.add(Calendar.YEAR, -N);
        long timeDay6= ca6.getTime().getTime();
        System.out.println(sd.format(timeDay6));

    }
}

  

3)Java中long类型的10位和13位的时间戳,转换为可供查看的时间格式

如果接口文档中规定的是String类型,要注意一定不能含有l,只能含有数字

public static String timestamp2Date(String str_num) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (str_num.length() == 13) {
            String date = sdf.format(new Date(toLong(str_num)));
            System.out.println("将13位时间戳:" + str_num + "转化为字符串:" + date);
            return date;
        } else {
            String date = sdf.format(new Date(toLong(str_num) * 1000));
            System.out.println("将10位时间戳:" + str_num + "转化为字符串:" + date);
            return date;
        }
    }

    public static long toLong(String obj) {
         return Long.parseLong(obj);
    }

    @Test
    public void Te(){
        String aaa = "1566802997242";
        String bbb = "1566801239";
        System.out.println(aaa.length());
        System.out.println(bbb.length());
        timestamp2Date(aaa);
        timestamp2Date(bbb);

    }

原文地址:https://www.cnblogs.com/qianjinyan/p/11413326.html

时间: 2024-10-23 07:43:20

Java中时间格式处理,指定N天/小时等之后的时间的相关文章

模仿微信朋友圈发布时间,将过去时间格式化成xx(秒/分/小时/天)前

模仿微信朋友圈发布时间,使用扩展方法将将过去时间展示成xx(秒/分/小时/天)前,以留言列表中的留言时间为例,先来看一下直接的时间展示效果(date.ToString("yyyy/MM/dd HH:mm:ss")) 感觉很一般,没有什么特别 下面 我们写一个拓展方法,将留言时间格式化成xx(秒/分/小时/天)前 decimal.Truncate(data)//取decimal整数位 public static class HtmlExpansion { //只格式化2天内的时间 pub

java中日期格式的转换和应用

java中主要有3个类用于日期格式转换    DateFormat .SimpleDateFormat.Calendar 1.SimpleDateFormat 该类是DateFormat的子类,一般日期的格式化都是实例化该类实现 具体应用如下 package com.gree.java; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.log

Java中utf-8格式字符串的存储方法。

知识点:可通过 byte[] bytes="xxxx".getBytes("utf-8")得到字符串通过utf-8解析到字节数组.utf-8编码格式下,计算机采用1个字节存储ASCII范围内的字符,采用3个字节储存中文字符. UTF-8是一种变长字节编码方式.对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0:如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头.UTF-8最多可用到6个字节.

C#时间格式转换问题(12小时制和24小时制)

string time = Convert.ToDateTime(date).ToString("yyyy-MM-dd HH:mm");//24小时 string time = Convert.ToDateTime(date).ToString("yyyy-MM-dd HH:mm");//12小时 问题源于:

java中存储mysql数据库时间类型【date、time、datetime、timestamp】

在MySQL中对于时间的存储自己见表的时候都是设置的varchar类型的,感觉挺方便的. 昨天拿别人建好的表写代码,发现这张表中时间类型为datetime的,凭感觉试了一下不行,网上查了刚开始试了好几个都是不对的,一脸懵逼. -----------------------------------------------------------------------------------------------------------------------------------------

Sql Server中日期时间格式化为字符串输出

在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日期时间转字符串的相关知识,接下来就让我们一起来了解一下这部分内容. 日期时间转字符串: Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1):

django数据库中的时间格式与页面渲染出来的时间格式不一致的处理

django数据库中的时间格式与页面渲染出来的时间格式不一致的处理. 在数据库里,时间是这样显示的: date: 2012-07-21 12:27:22 | date | datetime | NO | | NULL | | +-----------+-------------+------+-----+---------+----------------+ 在模板里用: <span>{{ post.date }}</span> 打印出来,时间格式是这样的: July 21, 20

一起Polyfill系列:让Date识别ISO 8601日期时间格式

一.什么是ISO 8601日期时间格式 ISO 8601是国际标准化组织制定的日期时间表示规范,全称是<数据存储和交换形式·信息交换·日期和时间的表示方法>. 示例: 1. 2014-12-12T00:00:00.000Z 2. 2014-12-12T00:00:00.000+08 3. 2014-12-12T00:00:00.000+0800 4. 2014-12-12T00:00:00.000+08:00 5. 2004-W17-3 6. 0001-165 详细说明请参考度娘:http:/

sql 时间格式

在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日期时间转字符串的相关知识,接下来就让我们一起来了解一下这部分内容. 日期时间转字符串: Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1):