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. 实践是检验认识真理性的唯一标准,试一试就知道方法好不好用了~~~

相关文章
|
3月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
40 0
java基础(13)String类
|
2月前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第14天】Java零基础教学篇,手把手实践教学!
111 65
|
2月前
|
JSON 前端开发 Java
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
文章介绍了Java后端如何使用Spring Boot框架响应不同格式的数据给前端,包括返回静态页面、数据、HTML代码片段、JSON对象、设置状态码和响应的Header。
143 1
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
|
2月前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第13天】Java零基础教学篇,手把手实践教学!
41 1
|
2月前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
31 2
|
2月前
|
IDE Java 开发工具
Java“未封闭的 String 表达式”怎么解决
要解决Java中的“未封闭的 String 表示”问题,需检查并修正字符串字面量,确保每个字符串被正确地用双引号括起来。若字符串跨越多行,可使用字符串连接操作符(+)或引入文本块(JDK 13 及以上版本)。这能帮助避免语法错误,并使代码更整洁易读。
|
2月前
|
存储 安全 Java
【一步一步了解Java系列】:认识String类
【一步一步了解Java系列】:认识String类
25 2
|
3月前
|
安全 Java API
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
这篇文章介绍了Java中处理日期和时间的API,包括旧的日期API(Date、SimpleDateFormat、Calendar)和Java 8引入的新日期API(LocalTime、LocalDate、LocalDateTime)。文章详细解释了这些类/接口的方法和用途,并通过代码示例展示了如何使用它们。此外,还讨论了新旧API的区别,新API的不可变性和线程安全性,以及它们提供的操作日期时间的灵活性和简洁性。
|
3月前
|
安全 Java
Java StringBuffer 和 StringBuilder 类详解
在 Java 中,`StringBuffer` 和 `StringBuilder` 用于操作可变字符串,支持拼接、插入、删除等功能。两者的主要区别在于线程安全性和性能:`StringBuffer` 线程安全但较慢,适用于多线程环境;`StringBuilder` 非线程安全但更快,适合单线程环境。选择合适的类取决于具体的应用场景和性能需求。通常,在不需要线程安全的情况下,推荐使用 `StringBuilder` 以获得更好的性能。
|
2月前
|
Java
Java的Date类使用
Java的Date类使用
22 0

热门文章

最新文章

下一篇
无影云桌面