Date、字符串和毫秒值三者互转

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

时间工具

  • 1. 时间字符串与Date转换
    • 1.1 Date转字符串
    • 1.2 字符串转Date
  • 2. Date与ms值之间的转换
    • 2.1 Date类型日期转成毫秒值
    • 2.2 毫秒值转为Date类型的日期
  • 3. 字符串日期转毫秒值
  • 4. 时间转换工具类TimeTools.java

最近开发一些跟时间相关的业务功能接口,总结了一下时间相关的转换内容。

1. 时间字符串与Date转换

1.1 Date转字符串

String pattern = "yyyy-MM-dd hh:mm:ss"
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String timeStr = sdf.format(date);

1.2 字符串转Date

String pattern = "yyyy-MM-dd hh:mm:ss";
String dateStr = "2023-07-11 16:18:30";
Date date = new SimpleDateFormat(pattern).parse(pattern);

2. Date与ms值之间的转换

2.1 Date类型日期转成毫秒值

直接调用.getTime()函数获取毫秒值

Date date = new Date();
long dateTime = date.getTime();

使用日历类进行转换传参后调用函数获取毫秒值,以2023年7月11日为例,传入年月日三个参数

int y = 2023;
int m = 7;
int d = 11;
Calendar c = Calendar.getInstance();
c.set(y,m,d);
Date date = c.getTime();
long dateTime = date.getTime();

使用日历类进行转换传参后调用函数获取毫秒值,以2023年7月11日16时10分30秒为例,传入年月日时分秒六个参数

int y = 2023;
int m = 7;
int d = 11;
int h = 16;
int mm = 10;
int s = 30;
Canlendar c = Calendar.getInstance();
c.set(y,m,d,h,mm,s);
Date date = c.getTime();
long dateTime = date.getTime();

2.2 毫秒值转为Date类型的日期

使用Date的setTime()函数进行毫秒值转Date,以2023年7月12日8时49分30秒为例,其毫秒值为1689122970562

long ms = 1689122970562;
Date date = new Date();
date.setTime(ms);

3. 字符串日期转毫秒值

即将字符串时间转为Date类型再由Date类型转为ms毫秒值,以字符串时间"2023-07-11 16:16:20"为例,转为毫秒值

String pattern = "yyyy-MM-dd hh:mm:ss";
String dateStr = "2023-07-11 16:16:20";
DateFormat df = new SimpleDateFormat(pattern);
Date date = df.parse(dateStr);
long dateTime = date.getTime();

4. 时间转换工具类TimeTools.java

package com.data.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @Description: 时间工具
 * @Version 1.0
 * @Author 李白
 * @Date 2023/7/11 星期二 16:25
 */
public class TimeTools {

/**-------------------------字符串时间与Date类型转换-------------------------**/

    /**
     * 字符串时间转Date类型
     * @param timeStr 时间字符串
     * @return
     */
    public static Date String2Date(String timeStr){
        Date date;
        try {
            //默认转换前的字符串格式如下 年月日空格分秒: 2023-07-05 12:30:25
            date = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(timeStr);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        return date;
    }
    /**
     * 字符串时间转Date类型,指定输入的字符串时间格式
     * @param timeStr
     * @param timePattern 按照传入的规则输入时间字符串
     * @return
     */
    public static Date String2Date(String timeStr, String timePattern){
        Date date;
        try {
            date = new SimpleDateFormat(timePattern).parse(timeStr);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        return date;
    }

    /**
     * Date转字符串
     * @param date 日期
     * @return
     */
    public static String Date2String(Date date){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String timeStr = sdf.format(date);
        return timeStr;
    }

    /**
     * Date转字符串(指定格式)
     * @param date 日期
     * @param pattern 日期格式 yyyy-MM-dd hh:mm:ss
     * @return
     */
    public static String Date2String(Date date, String pattern){
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        String timeStr = sdf.format(date);
        return timeStr;
    }


    /**-------------------------Date日期与毫秒值ms的转换-------------------------**/

    /**
     * 毫秒值转为对应的日期
     * @param ms 时间毫秒值
     * @return
     */
    public static Date ms2Date(long ms){
//        Date date = new Date(ms);
        Date date = new Date();
        date.setTime(ms);
        System.out.println(date);
        return date;
    }

    /**
     * 日期转毫秒值
     * @param date
     * @return
     */
    public static long date2Ms(Date date){
        long dateTime = date.getTime();
        System.out.println(dateTime);
        return dateTime;
    }

    /**
     * 指定日期转为毫秒值
     * @param y 年
     * @param m 月
     * @param d 日
     * @return
     */
    public static long date2Ms(int y,int m, int d){
        Calendar calendar = Calendar.getInstance();
        calendar.set(y,m,d);
        Date date = calendar.getTime();
        long dateTime = date.getTime();
        System.out.println(dateTime);
        return dateTime;
    }

    /**
     * 指定日期转为毫秒值
     * @param y 年
     * @param m 月
     * @param d 日
     * @param h 时
     * @param mm 分
     * @param s 秒
     * @return
     */
    public static long date2Ms(int y,int m, int d, int h, int mm, int s){
        Calendar calendar = Calendar.getInstance();
        calendar.set(y,m,d,h,mm,s);
        Date date = calendar.getTime();
        long dateTime = date.getTime();
        System.out.println(dateTime);
        return dateTime;
    }

    /**
     * 指定日期字符串转为毫秒值
     * @param dateStr 指定格式输入日期字符串 如 2023-07-07 08:20:38
     * @return
     * @throws ParseException
     */
    public static long date2Ms(String dateStr) throws ParseException {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date date = df.parse(dateStr);
        long dateTime = date.getTime();
        System.out.println(dateTime);
        return dateTime;
    }

    /**
     * 指定日期字符串转为毫秒值
     * @param dateStr 指定格式输入日期字符串 如 2023-07-07 08:20:38
     * @param timePattern 字符串日期格式 如 yyyy-MM-dd hh:mm:ss
     * @return
     * @throws ParseException
     */
    public static long date2Ms(String dateStr, String timePattern) throws ParseException {
        DateFormat df = new SimpleDateFormat(timePattern);
        Date date = df.parse(dateStr);
        long dateTime = date.getTime();
        System.out.println(dateTime);
        return dateTime;
    }
}


你可能感兴趣的:(工具,java)