一些有关时间的小工具

一些有关时间的小工具

知识储备

1.java.util.Date:时间类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GB0D6LQO-1660111797223)(在这里插入图片描述
)]

构造方法

Date()
分配一个 Date对象,并初始化它,以便它代表它被分配的时间,测量到最近的毫秒。

一点功能:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cHj60Rt9-1660111797226)(assets/在这里插入图片描述
)]

2.java.text.DateFormat:时间格式化类(抽象类),实现类:java.text.SimpleDateFormat

DateFormat是日期/时间格式化子类的抽象类,它以语言无关的方式格式化和分析日期或时间。

日期/时间格式化子类(如SimpleDateFormat )允许格式化(即日期文本),解析(文本日期)和归一化。

该日期表示为一个Date对象,或自1970年1月1日00:00:00 GMT以来的毫秒。

DateFormat提供了许多类方法,用于根据默认或给定的区域设置和多个格式化样式获取默认的日期/时间格式化程序。 格式化风格包括FULLLONGMEDIUMSHORT 。 方法说明中提供了更多细节和使用这些样式的示例。

DateFormat可帮助您格式化和解析任何区域设置的日期。 您的代码可以完全独立于几个月,几个星期甚至日历格式的区域设置约定:月球与太阳能。

要格式化当前区域设置的日期,请使用静态工厂方法之一:

myString = DateFormat.getDateInstance().format(myDate);

在这里插入图片描述

3.java.util.Calendar:日历类(抽象类),实现类:java.util.GergorianCalendar

  • 所述Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方法calendar fieldsYEARMONTHDAY_OF_MONTHHOUR ,等等,以及用于操纵该日历字段,如获取的日期下个星期。

    时间上的瞬间可以用毫秒值表示,该值是从1970年1月1日00:00 00:00.000 GMT(Gregorian)的Epoch的偏移量。

    该类还提供了用于在包外部实现具体日历系统的其他字段和方法。 这些字段和方法定义为protected

    与其他区域设置敏感的类一样, Calendar提供了一种类方法getInstance ,用于获取此类型的一般有用的对象。 CalendargetInstance方法返回一个Calendar对象,其日历字段已使用当前日期和时间进行初始化:

    Calendar rightNow = Calendar.getInstance();

    Calendar对象可以产生实现特定语言和日历风格的日期时间格式化所需的所有日历字段值(例如日语 - 公历,日语 - 繁体)。 Calendar定义某些日历字段返回的值的范围及其含义。 例如,日历系统第一个月的值为MONTH == JANUARY为所有日历。 其他值由具体的子类定义,如ERA 。 有关详细信息,请参阅各个实体文档和子类文档。

    获取和设置日历字段值

    可以通过调用set方法设置日历字段值。 在Calendar设置的任何字段值将不被解释,直到它需要计算其时间值(从Epoch的毫秒)或日历字段的值。 调用getgetTimeInMillisgetTimeaddroll涉及这样的计算。

在这里插入图片描述

时间的小工具

``

public class TimeHelper {
    public static final String FORMAT_NOTIME = "yyyy-MM-dd";

    public static SimpleDateFormat simpleDateFormat = new SimpleDateFormat(FORMAT_NOTIME);

    public static long todayDate;

    private static final String TAG = "TimeController";

    /*----日期类----*/

    // 得到当前日期戳(不带时间,只有日期)
    public static long getCurrentDateStamp() {
        Calendar cal = Calendar.getInstance();
        int currentYear = cal.get(Calendar.YEAR);
        int currentMonth = cal.get(Calendar.MONTH) + 1;
        int currentDate = cal.get(Calendar.DATE);
        long time = 0;
        try {
            time = simpleDateFormat.parse(currentYear + "-" + currentMonth + "-" + currentDate).getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return time;
    }

    // 根据指定日期戳解析成日期形式(yyyy-MM-dd)
    public static String getStringDate(long timeStamp) {
        return simpleDateFormat.format(new Date(Long.parseLong(String.valueOf(timeStamp))));
    }

    // 根据指定日期戳解析成日期形式(yyyy-MM-dd)
    public static String getStringDateDetail(long timeStamp) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return simpleDateFormat.format(new Date(Long.parseLong(String.valueOf(timeStamp))));
    }

    // 得到当前日期的指定间隔后的日期
    public static long getDateByDays(long time, int intervalDay) throws ParseException {
        // 转换成Calendar
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(time);
        calendar.add(Calendar.DATE, intervalDay);
        return calendar.getTimeInMillis();
    }

    // 返回两个日期之间相隔多少天
    public static int daysInternal(long time1, long time2) throws ParseException {
        Date date1 = simpleDateFormat.parse(getStringDate(time1));
        Date date2 = simpleDateFormat.parse(getStringDate(time2));
        int days = (int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24));
        return days;
    }

    /*----时间类----*/

    // 得到当前时间戳(有日期与时间)
    public static long getCurrentTimeStamp() {
        return System.currentTimeMillis();
    }

    // 判断两个时间戳是否为同一天
    public static boolean isTheSameDay(long time1, long time2) {
        return getStringDate(time1).equals(getStringDate(time2));
    }

    // 返回过去第几天的日期
    public static String getPastDate(int past) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
        Date today = calendar.getTime();
        SimpleDateFormat format = new SimpleDateFormat("MM-dd");
        String result = format.format(today);
        return result;
    }

    // 返回过去第几天的日期(有年份)
    public static String getPastDateWithYear(int past) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
        Date today = calendar.getTime();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String result = format.format(today);
        return result;
    }

    // 获取n天以后的日期
    public static String getDayAgoOrAfterString(int num) {
        Calendar calendar1 = Calendar.getInstance();
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日");
        calendar1.add(Calendar.DATE, num);
        return sdf1.format(calendar1.getTime());
    }
DateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日");
        calendar1.add(Calendar.DATE, num);
        return sdf1.format(calendar1.getTime());
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值