java的String、timestamp、Date、秒数等各种时间格式相互转换

简介: 版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/78979737 简介  1.
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/78979737

简介

  1. 在做项目功能的时候,由于数据源、数据类型等的不同,导致出现各种不同格式的时间,而我们在使用这些时间的时候往往会遇到格式转换的问题;
  2. 下面是总结在项目中可能会遇到的一系列时间格式转换问题以及转换方法;
  3. 这些方法基本上都能够解决实际问题;

项目实践

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

public class TimeChangeAround {

    /**
     * 将普通时间格式转换成相差8小时的timestamp格式,参数Date类型
     * 比如普通时间格式:new Date()
     * 转换后的timestamp时间:2018-01-05T03:02:53Z
     * @param datetime 类型为Date
     * @return
     */
    public static String formatDateToTimestamp(Date datetime){
        SimpleDateFormat sdFormat=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        Calendar date2=Calendar.getInstance();
        date2.setTime(datetime);
        date2.set(Calendar.HOUR, date2.get(Calendar.HOUR)-8);
        Date endDate=null;
        try {
            endDate =sdFormat.parse(sdFormat.format(date2.getTime()));
        } catch (Exception e) {
            e.printStackTrace();
        }
        sdFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
        String date=sdFormat.format(endDate);
//        Timestamp stamp=Timestamp.valueOf(date);
        return date;
    }

    /**
     * 将普通时间格式转换成相差8小时的timestamp时间格式,参数String类型
     * 比如string时间:"2018-01-05 11:03:05"
     * 转换后的timestamp时间:2018-01-05T03:03:05Z
     * @param date 类型为string
     * @return
     */
    public static String formatStringToTimestamp(String date) {
        String resultDate = "";
        SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        try {
            Object obj = sim.parse(date).getTime();
            String ooo = obj.toString();
            long stimes = Long.parseLong(ooo);
            stimes = stimes - 28800000;
            Calendar qcalendar = Calendar.getInstance();
            qcalendar.setTimeInMillis(stimes);
            resultDate = sdf.format(qcalendar.getTime());

        } catch (ParseException e1) {
            return "";
        }
        return resultDate;
    }

    /**
     * 将timestamp格式转换成正常的时间格式,参数String类型
     * 比如timestamp格式时间:"2018-01-05T03:03:05Z"
     * 转换后的DateString时间:"2018-01-05 11:03:05"
     * @param timestamp  参数格式timestamp
     * @return
     */
    public static String timestampToDateString(String timestamp){
        String resultDate = "";
        try {
            SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
//          String timestamp1 = timestamp.substring(0,timestamp.indexOf("."))+"Z";
            Object obj = sdf.parse(timestamp).getTime();
            String ooo = obj.toString();
            long stimes = Long.parseLong(ooo);
            stimes = stimes + 28800000;
        /*  Calendar qcalendar = Calendar.getInstance();
            qcalendar.setTimeInMillis(stimes);*/
            Date da = new Date(stimes);
            resultDate = sim.format(da.getTime());

        } catch (Exception e1) {
            return "";
        }
        return resultDate;
    }

    /**
     * 将距离1970年的数字时间转换成正常的字符串格式时间;
     * 比如数字时间:"1513345743"
     * 转换后:"2017-12-15 21:49:03"
     * @param time
     * @return
     */
    public static String secondToTime(String time){
        String dateStr="1970-1-1 08:00:00";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
           if (time.equals("0")) {
            return "";
        }
           Date miDate;
           String returnstr="";
        try {
            miDate = sdf.parse(dateStr);
            Object t1=miDate.getTime();
            long h1=Long.parseLong(time.toString())*1000+Long.parseLong(t1.toString());
            returnstr=sdf.format(h1);
        } catch (ParseException e) {
            e.printStackTrace();
        }
            return returnstr;
    }

    /**
     * 将现在的正常字符串格式时间转换成距离1970的数字时间
     * 比如字符串格式时间:"2017-12-15 21:49:03"
     * 转换后的数字时间:"1513345743"
     * @param time  
     * @return
     */
    public static Long timeToSecond(String time){
        String dateStr="1970-1-1 08:00:00";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long aftertime=0;
        try {
            Object d1=sdf.parse(time).getTime();
            Date miDate = sdf.parse(dateStr);
            Object t1=miDate.getTime();
            long d1time=Long.parseLong(d1.toString())/1000;
            long t1time=Long.parseLong(t1.toString())/1000;
            aftertime = d1time-t1time;
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return aftertime;   

    }
    /**
     * 将字符串时间格式转换成Date时间格式,参数String类型
     * 比如字符串时间:"2017-12-15 21:49:03"
     * 转换后的date时间:Fri Dec 15 21:49:03 CST 2017
     * @param datetime 类型为String
     * @return
     */
    public static Date StringToDate(String datetime){
        SimpleDateFormat sdFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        try {
            date = sdFormat.parse(datetime);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return date;
    }

    /**
     * 将Date时间格式转换成字符串时间格式,参数Date类型
     * 比如Date时间格式:new Date()
     * 转换后的String格式:2018-01-05 11:54:35
     * @param datetime 类型为Date
     * @return
     */
    public static String DateToString(Date datetime){
        SimpleDateFormat sdFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date=sdFormat.format(datetime);
        return date;
    }   
    public static void main(String[] args) {
        System.out.println(timeToSecond("2017-12-15 21:49:03"));
    }

}

总结

  1. 以上就是对项目中可能会出现的各种时间格式转换的问题以及解决方法,还有其他未涉及到的欢迎补充;
  2. 实践是检验认识真理性的唯一标准,试一试就知道方法好不好用了~~~

相关文章
|
8月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
467 5
|
8月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
328 0
|
10月前
|
存储 SQL 缓存
Java字符串处理:String、StringBuilder与StringBuffer
本文深入解析Java中String、StringBuilder和StringBuffer的核心区别与使用场景。涵盖字符串不可变性、常量池、intern方法、可变字符串构建器的扩容机制及线程安全实现。通过性能测试对比三者差异,并提供最佳实践与高频面试问题解析,助你掌握Java字符串处理精髓。
|
11月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
495 14
|
10月前
|
安全 Java API
Java日期时间API:从Date到Java.time
本文深入解析了Java 8中引入的全新日期时间API,涵盖LocalDate、LocalTime、LocalDateTime、ZonedDateTime等核心类的使用,以及时间调整、格式化、时区处理和与旧API的互操作。通过实例对比,展示了新API在可变性、线程安全与易用性方面的显著优势,并提供迁移方案与实战技巧,助你掌握现代Java时间处理的最佳实践。
|
前端开发 JavaScript Java
Java中将图片转换为base64格式的技巧
这样,你就可以在Java中将图片转换为Base64格式了。这个方法的实现非常简单,只需要使用Java的内置库,无需任何额外的库。希望这个方法对你有所帮助。
884 22
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
393 11
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第14天】Java零基础教学篇,手把手实践教学!
451 65
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
431 9