java时间转换


import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

@Component
public class DateUtil {
    /**
     * utc转本地时间
     *
     * @param time
     * @return
     */
    public static String utcToLocal(String time) {
        ZonedDateTime zdt = ZonedDateTime.parse(time);
        LocalDateTime localDateTime = zdt.toLocalDateTime();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return formatter.format(localDateTime.plusHours(8));
    }

    /**
     * utc转本地时间
     *
     * @param time
     * @return
     */
    public static String utcToLocal(String time,String expression) {
        ZonedDateTime zdt = ZonedDateTime.parse(time);
        LocalDateTime localDateTime = zdt.toLocalDateTime();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(expression);
        return formatter.format(localDateTime.plusHours(8));
    }

    public static String uTCToLocal(String utc) {
        SimpleDateFormat sdfUTC = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
        Date parse =null;
        try {
            parse = sdfUTC.parse(utc);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = formatter.format(parse);
        return format;
    }

    /**
     * 本地时间转UTC
     *
     * @param time
     * @return
     */
    public static String localToUtc(String time) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
        Date parse;
        try {
            try {
                parse = sdf.parse(time);
            } catch (Exception e) {
                parse = sdf2.parse(time);
            }

            SimpleDateFormat sdfUTC = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
            sdfUTC.setTimeZone(TimeZone.getTimeZone("UTC"));
            return sdfUTC.format(parse);
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 获取时间本地格式
     *
     * @return
     */
    public static String getLocalTimeByNow() {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(date);
    }

    /**
     * 获取时间本地格式
     *
     * @return
     */
    public static String getTimeByNow() {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-HHmmss");
        return sdf.format(date);
    }

    /**
     * 获取时间UTC格式
     *
     * @return
     */
    public static String getUtcTimeByNow() {
        return localToUtc(getLocalTimeByNow());
    }

    /**
     * 计算 day 天后的时间
     *
     * @param date
     * @param day
     * @return
     */
    public static Date getDay(Date date, int day) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, day);
        return calendar.getTime();
    }

    /**
     * 计算 month 月后的时间
     *
     * @param date
     * @param month
     * @return
     */
    public static Date getMonth(Date date, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, month);
        return calendar.getTime();
    }

    /**
     * 计算 year 年后的时间
     *
     * @param date
     * @param year
     * @return
     */
    public static Date getYear(Date date, int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.YEAR, year);
        return calendar.getTime();
    }

    /**
     * 根据单位 年月日 来计算date时间num单位后的时间
     *
     * @param date 计算的时间 yyyy-MM-dd
     * @param num  数量
     * @param unit 单位年月日
     * @return
     */
    public static String getDate_day_month_year(String date, String num, String unit) throws Exception {
        String dateStr = null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date parse = sdf.parse(date);
        if (unit.equals("年")) {
            Date year = getYear(parse, Integer.valueOf(num));
            dateStr = sdf.format(year);
        } else if (unit.equals("月")) {
            Date month = getMonth(parse, Integer.valueOf(num));
            dateStr = sdf.format(month);
        } else if (unit.equals("天")) {
            Date day = getDay(parse, Integer.valueOf(num));
            dateStr = sdf.format(day);
        }
        return dateStr;
    }

    public static void main(String[] args) throws ParseException {
        String s = uTCToLocal("2022-04-07T16:00:00.000Z");
        System.out.println("s = " + s);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,时间转换可以使用Java标准库中的`java.time`包来实现。下面是一些示例代码,演示了如何在Java中进行时间转换。 1. 时间戳转日期时间字符串 ```java import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; public class TimestampToDateTimeString { public static void main(String[] args) { long timestamp = 1622016000000L; // 时间戳,单位为毫秒 Instant instant = Instant.ofEpochMilli(timestamp); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String dateTimeString = localDateTime.format(formatter); System.out.println(dateTimeString); } } ``` 2. 日期时间字符串转时间戳 ```java import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; public class DateTimeStringToTimestamp { public static void main(String[] args) { String dateTimeString = "2021-05-26 12:00:00"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime localDateTime = LocalDateTime.parse(dateTimeString, formatter); long timestamp = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); System.out.println(timestamp); } } ``` 3. 日期时间字符串转Date对象 ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateTimeStringToDate { public static void main(String[] args) throws ParseException { String dateTimeString = "2021-05-26 12:00:00"; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = formatter.parse(dateTimeString); System.out.println(date); } } ``` 4. Date对象转日期时间字符串 ```java import java.text.SimpleDateFormat; import java.util.Date; public class DateToDateTimeString { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateTimeString = formatter.format(date); System.out.println(dateTimeString); } } ``` 上述示例代码演示了一些常见的Java时间转换操作,您可以根据自己的需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值