java时间戳与日期相互转换工具详解

本文为大家分享了java日期与时间戳相互转换大全,供大家参考,具体内容如下

package com.crm.util; 

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; 

/**
 * @author DingJiaCheng
 * */
public class DateFormatUtil { 

  /**
   * 时间戳转日期
   * @param ms
   * @return
   */
  public static Date transForDate(Integer ms){
    if(ms==null){
      ms=0;
    }
    long msl=(long)ms*1000;
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date temp=null;
    if(ms!=null){
      try {
        String str=sdf.format(msl);
        temp=sdf.parse(str);
      } catch (ParseException e) {
        e.printStackTrace();
      }
    }
    return temp;
  } 

  /**
   * 获取晚上9点半的时间戳
   *
   * @return
   */
  public static int getTimes(int day, int hour, int minute) {
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, day);
    cal.set(Calendar.HOUR_OF_DAY, hour);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MINUTE, minute);
    cal.set(Calendar.MILLISECOND, 0);
    return (int) (cal.getTimeInMillis() / 1000);
  } 

  /**
   * 获取当前时间往上的整点时间
   *
   * @return
   */
  public static int getIntegralTime() {
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.HOUR_OF_DAY, 1);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return (int) (cal.getTimeInMillis() / 1000);
  } 

  public static int getIntegralTimeEnd() {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 24);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return (int) (cal.getTimeInMillis() / 1000);
  } 

  /**
   * 时间戳转日期
   * @param ms
   * @return
   */
  public static Date transForDate3(Integer ms){
    if(ms==null){
      ms=0;
    }
    long msl=(long)ms*1000;
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
    Date temp=null;
    if(ms!=null){
      try {
        String str=sdf.format(msl);
        temp=sdf.parse(str);
      } catch (ParseException e) {
        e.printStackTrace();
      }
    }
    return temp;
  }
  /**
   * 时间戳转日期
   * @param ms
   * @return
   */
  public static Date transForDate(Long ms){
    if(ms==null){
      ms=(long)0;
    }
    long msl=(long)ms*1000;
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date temp=null;
    if(ms!=null){
      try {
        String str=sdf.format(msl);
        temp=sdf.parse(str);
      } catch (ParseException e) {
        e.printStackTrace();
      }
    }
    return temp;
  } 

  public static String transForDate1(Integer ms){
    String str = "";
    if(ms!=null){
      long msl=(long)ms*1000;
      SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

      if(ms!=null){
        try {
          str=sdf.format(msl);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    return str;
  }
  public static String transForDate2(Integer ms){
    String str = "";
    if(ms!=null){
      long msl=(long)ms*1000;
      SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 

      if(ms!=null){
        try {
          str=sdf.format(msl);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    return str;
  } 

  public static String transForDate4(Integer ms){
    String str = "";
    if(ms!=null){
      long msl=(long)ms*1000;
      SimpleDateFormat sdf=new SimpleDateFormat("yyyy.MM.dd"); 

      if(ms!=null){
        try {
          str=sdf.format(msl);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    return str;
  } 

  public static String transForDate5(Integer ms){
    String str = "";
    if(ms!=null){
      long msl=(long)ms*1000;
      SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 

      if(ms!=null){
        try {
          str=sdf.format(msl);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    return str;
  } 

  public static String transForDateInChinese(Integer ms){
    String str = "";
    if(ms!=null){
      long msl=(long)ms*1000;
      SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); 

      if(ms!=null){
        try {
          str=sdf.format(msl);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    return str;
  } 

  /**
   * 日期转时间戳
   * @param date
   * @return
   */
  public static Integer transForMilliSecond(Date date){
    if(date==null) return null;
    return (int)(date.getTime()/1000);
  } 

  /**
   * 获取当前时间戳
   * @return
   */
  public static Integer currentTimeStamp(){
    return (int)(System.currentTimeMillis()/1000);
  } 

  /**
   * 日期字符串转时间戳
   * @param dateStr
   * @return
   */
  public static Integer transForMilliSecond(String dateStr){
    Date date = DateFormatUtil.formatDate(dateStr);
    return date == null ? null : DateFormatUtil.transForMilliSecond(date);
  }
  /**
   * 日期字符串转时间戳
   * @param dateStr
   * @return
   */
  public static Integer transForMilliSecond(String dateStr,String format){
    Date date = DateFormatUtil.formatDate(dateStr,format);
    return date == null ? null : DateFormatUtil.transForMilliSecond(date);
  }
  /**
   * 日期字符串转时间戳
   * @param dateStr
   * @param 格式 如"yyyy-mm-dd"
   * @return
   */
  public static Integer transForMilliSecondByTim(String dateStr,String tim){
    SimpleDateFormat sdf=new SimpleDateFormat(tim);
    Date date =null;
    try {
      date = sdf.parse(dateStr);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return date == null ? null : DateFormatUtil.transForMilliSecond(date);
  }
  /**
   * 字符串转日期,格式为:"yyyy-MM-dd HH:mm:ss"
   * @param dateStr
   * @return
   */
  public static Date formatDate(String dateStr){
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date result=null;
    try {
      result = sdf.parse(dateStr);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return result;
  }
  /**
   * 字符串转日期,格式为:"yyyy-MM-dd HH:mm:ss"
   * @param dateStr
   * @return
   */
  public static Date formatDate(String dateStr,String format){
    SimpleDateFormat sdf=new SimpleDateFormat(format);
    Date result=null;
    try {
      result = sdf.parse(dateStr);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return result;
  }
  /**
   * 日期转字符串
   * @param date
   * @return
   */
  public static String formatDate(Date date){
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String result=null;
    result = sdf.format(date);
    return result;
  }
  /**
   * 日期转字符串
   * @param date
   * @return
   */
  public static String formatDate(Date date,String format){
    SimpleDateFormat sdf=new SimpleDateFormat(format);
    String result=null;
    result = sdf.format(date);
    return result;
  }
  /**
   * 时间戳格式化输出(httl模版用)
   *
   * @param ms    时间戳
   * @param format  格式化
   * @return
   */
  public static String transForDate(Integer ms, String format){
    String str = "";
    if(ms!=null){
      long msl=(long)ms*1000;
      SimpleDateFormat sdf=new SimpleDateFormat(format);
      if(!ms.equals(0)){
        try {
          str=sdf.format(msl);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    return str;
  }   

  /**
   * 取BigDecimal类型数的整数或小数部分(httl模版用)
   *
   * @param b 值
   * @param mode 模式 0取整 1去小数部分
   * @return
   */
  public static String splitBigDecimal(BigDecimal b, int mode) {
    DecimalFormat df = new DecimalFormat("0.00");
    String s = df.format(b);
    if(mode==0){
      return s.split("\\.")[0];
    }else {
      return "."+s.split("\\.")[1];
    }
  } 

  /**
   * 计算两个日期之间差的天数(httl模版用)
   *
   * @param ts1  时间戳1
   * @param ts2  时间戳2
   * @return
   */
  public static int caculate2Days(Integer ts1, Integer ts2) {
    Date firstDate = DateFormatUtil.transForDate(ts1);
    Date secondDate = DateFormatUtil.transForDate(ts2);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(firstDate);
    int dayNum1 = calendar.get(Calendar.DAY_OF_YEAR);
    calendar.setTime(secondDate);
    int dayNum2 = calendar.get(Calendar.DAY_OF_YEAR);
    return Math.abs(dayNum1 - dayNum2);
  } 

  /**
   * 给手机加密中间四位加星号
   *
   * @param mobile
   * @return
   */
  public String mobileSerect(String mobile){
    if(!StringUtils.isBlank(mobile)){
      int between = mobile.length()/2;
      mobile = mobile.substring(0, between-2)+"****"+mobile.substring(between+2, mobile.length());
    }
    return mobile;
  } 

  /**
   * 给邮箱加密加星号
   *
   * @param email
   * @return
   */
  public String emailSerect(String email) {
    if(!StringUtils.isBlank(email)){
      int length = email.lastIndexOf("@");
      email = email.substring(0, 2)+"****"+email.substring(length-2, email.length());
    }
    return email;
  } 

  /**
   * BigDecimal类型数据相加
   *
   * @param BigDecimal source
   * @param BigDecimal target
   * @return
   */
  public BigDecimal sumBigDicimal(BigDecimal source, BigDecimal target) {
    source = source.add(target);
    return source;
  } 

  /**
   * BigDecimal类型数据相加
   *
   * @param BigDecimal source
   * @param BigDecimal target
   * @return
   */
  public BigDecimal sumBigDicimalAndDouble(BigDecimal source, Double target) {
    BigDecimal new_target = new BigDecimal(target);
    source = source.add(new_target);
    return source;
  } 

  /**
   * BigDecimal类型数据相减
   *
   * @param BigDecimal source
   * @param BigDecimal target
   * @return
   */
  public BigDecimal subBigDicimal(BigDecimal source, BigDecimal target) {
    source = source.subtract(target);
    return source;
  } 

  /**
   * 获取传入时间和当前时间的时间差
   * @return
   */
  public static Long getTimediff(int timeStamp){
    Date d1 = DateFormatUtil.transForDate(timeStamp);
    Date today = new Date();
    if(d1.getTime()<today.getTime()){
      return null;
    }
    return (d1.getTime()-today.getTime())/1000;
  } 

  /**
   * 获取某周的第一天日期
   * @param week 0 当周 1 上一周 -1 下一周
   * @return
   */
  public static String weekFirstDay(int week){
    Calendar c1 = Calendar.getInstance();
    int dow = c1.get(Calendar.DAY_OF_WEEK);
    c1.add(Calendar.DATE, -dow-7*(week-1)-5 );
    String d1 = new SimpleDateFormat("yyyy-MM-dd").format(c1.getTime());
    return d1+" 00:00:00";
  } 

  /**
   * 当前时间加一年
   */
  public static String addYear(int startTime){
    Date firstDate = DateFormatUtil.transForDate(startTime);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(firstDate);
    calendar.add(Calendar.YEAR,1);
    String d1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
    return d1;
  } 

  /**
   * 获取某周的最后一天日期
   * @param week
   * @return
   */
  public static String weekLastDay(int week){
    Calendar c1 = Calendar.getInstance();
    int dow = c1.get(Calendar.DAY_OF_WEEK);
    c1.add(Calendar.DATE, -dow-7*(week-1)+1);
    String d1 = new SimpleDateFormat("yyyy-MM-dd").format(c1.getTime());
    return d1+" 23:59:59";
  }   

  /**
   * 和当前时间比对
   * @return
   */
  public static boolean greaterThanNow(int timeStamp){
    Date d1 = DateFormatUtil.transForDate(timeStamp);
    Date today = new Date();
    if(d1.getTime()>=today.getTime()){
      return true;
    }
    return false;
  } 

  /**
   * HH:mm:ss格式时间转换为1970-01-01日的时间戳(也就是只有时间没有日期的情况要求使用时间戳表示时间)
   * @author DingJiaCheng
   * */
  public static int transFromTime(String time){
    return transForMilliSecond("1970-01-01 "+time,"yyyy-mm-dd HH:mm:ss");
  } 

  /**
   * 时间戳转换为HH:mm:ss格式时间(日期去除)
   * @author DingJiaCheng
   * */
  public static String transToTime(int time){
    String s = new String(transForDate1(time));
    String ss[] = s.split(" ");
    return ss[1];
  } 

  public static int transToChuo(String dateString){
    SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd");
    int res = 0;
    try {
      Date date=simpleDateFormat .parse(dateString);
      res = (int) date.getTime();
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return res;
  } 

  public static void main(String[] args) { 

    //System.out.println(getIntegralTimeEnd());
    System.out.println(transForDate2(transForMilliSecond("2015-02-25 00:00:00")));
    //System.out.println(transForMilliSecond("2016-01-25","yyyy-mm-dd"));
    //System.out.println(transForDate1(transForMilliSecond("1970-01-01 00:00:00","yyyy-mm-dd HH:mm:ss")));
    //System.out.println(currentTimeStamp());
    //System.out.println(transForDate(currentTimeStamp()));
    //System.out.println(new Date());
    //System.out.println(DateUtils.getDate());
    System.out.println(transFromTime("00:00:01"));
    System.out.println(transToTime(transFromTime("15:01:13")));
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java时间戳转日期格式的实现代码

    如下所示: 复制代码 代码如下: String beginDate="1328007600000"; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); String sd = sdf.format(new Date(Long.parseLong(beginDate))); System.out.println(sd);

  • java时间戳与日期相互转换工具详解

    本文为大家分享了java日期与时间戳相互转换大全,供大家参考,具体内容如下 package com.crm.util; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * @auth

  • Java开发基础日期类代码详解

    由于工作关系,很久没更新博客了,今天就给大家带来一篇Java实现获取指定月份的星期与日期对应关系的文章,好了,不多说,我们直接上代码: 一.日期工具类 package com.lyz.date; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.u

  • Java中SimpleDateFormat日期格式转换详解及代码示例

    SimpleDateFormat是处理日期格式转换的类. 官方API_1.8关于SimpleDateFormat继承于DateFormate截图: SimpleDateFormat的构造器如下: SimpleDateFormat中的格式定义,常用的用红色框圈出: 中文解释: y : 年 M : 年中的月份 D : 年中的天数 d : 月中的天数 w : 年中的周数 W : 月中的周数 a : 上下/下午 H : 一天中的小时数(0-23) h : 一天中的小时数(0-12) m : 小时中的分钟

  • JAVA List和Map切割工具详解

    使用PHP开发的同学都知道array_chunk函数,其作用是将数据进行切割分段,但是在 java中却找不到合适的给List和Map分段的函数. 在此我写了一个切割工具,分享一下 import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import

  • Java String字符串和Unicode字符相互转换代码详解

    网上大部分有关"Java String字符串和Unicode字符相互转换代码"的博文几乎都仅是将全为Unicode字符的字符串进行转换,而我们日常很可能需要的是将混有普通字符的Unicode一并转换(例如"\u0061\u0062\u0063(123)",我们希望转换成"abc(123)",而实际上网上的通用方法并不符合该需求,运行即报错),普通字符跳过而Unicode字符要进行转换,在进行字符串的查找替换截取什么的使用正则表达式往往是个很好的选

  • 5个主流的Java开源IDE工具详解

    Java IDE工具提供了多种用户独特需求和个人偏好来创建编程环境的方法. Java框架能够简化程序员的工作.这些框架被设计和开发用于在任何服务器环境上运行任意应用程序;包括解析注释.扫描描述符.加载配置和在Java虚拟机(JVM)上启动实际服务方面的动态行为.控制这么大的范围需要更多的代码,使得减少内存占用或加速新应用程序的启动时间变得困难.无论如何,Java在当今使用的编程语言中始终排在前三名,在TIOBE索引中涉及700万到1000万的程序员和开发者. 因为Java如此的普及,意味着集成开

  • 全网最详细Hutool工具详解

    很多方法请看官网地址:hutool官网地址 我们下载:https://www.jb51.net/softs/549331.html 简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的". Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当: Hutool是项目中&qu

  • java Date和SimpleDateFormat时间类详解

    目录 前言: 一.介绍 二.知识点介绍 三.知识点讲解 1.Date类的声明 2.Date类的常用方法 3.SimpleDateFormat格式化日期 4.精炼练习 4.1 题目 4.2 实验步骤 4.3 代码演示 结语 前言: 任何的收获不是巧合,而是每天的努力与坚持得来的!人生因有梦想而充满动力,不怕你每天迈一小步,只怕你停滞不前:不怕你每天做一点事,只怕你无所事事.坚持,是生命的一种毅力:执行,是努力的一种坚持! 在这钢筋混凝土的森林里,数不尽的豺狼虎豹,能做的就是努力往上爬,一路的打怪升

  • Java8新特性Optional类及新时间日期API示例详解

    目录 Optional类 以前对null的处理 Optional类介绍 Optional的基本使用 Optional的常用方法 新时间日期API 旧版日期时间的问题 新日期时间API介绍 日期时间的常见操作 日期时间的修改和比较 格式化和解析操作 Instant类 计算日期时间差 时间校正器 日期时间的时区 JDK新的日期和时间API的优势 Optional类 面试官:Optional类了解过吗? 这个Optional类主要是解决空指针的问题. 以前对null的处理 @Test public v

  • java synchronized的用法及原理详解

    目录 为什么要用synchronized 使用方式 字节码语义 对象锁(monitor) 锁升级过程 为什么要用synchronized 相信大家对于这个问题一定都有自己的答案,这里我还是要啰嗦一下,我们来看下面这段车站售票的代码: /** * 车站开两个窗口同时售票 */ public class TicketDemo { public static void main(String[] args) { TrainStation station = new TrainStation(); //

随机推荐