IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 时间的类型转换及定义Date工具类 -> 正文阅读

[游戏开发]时间的类型转换及定义Date工具类

1:Date类型转换为字符串

	Date date = DateUtil.date();
    // 年月日2022-03-31
    System.out.println("年月日" + DateUtil.formatDate(date));
    // 时分秒16:49:08
    System.out.println("时分秒" + DateUtil.formatTime(date));
    // 年月日 时分秒2022-03-31 16:49:08
    System.out.println("年月日 时分秒" + DateUtil.formatDateTime(date));
	//SimpleDateFormat进行时间的转换
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
    //时间Date转字符串
    String format1 = format.format(date);
    //20220331
    System.out.println(format1);

2:字符串时间转Date

//说明:格式是“20201010”、“2020-1010”或者“2020.10.10”,要转换为Date都是用Hutool中的DateUtil.parse()方式,parse()会自动识别字符串获得Date类型数据,获取到的date格式是2020-10-10类型。这样就不需要判断用户输入的是什么类型的时间字符串。

	String strTime = "2020.10.10";
    // 输出2020-10-10 00:00:00
    Date date = DateUtil.parse(strTime);
    System.out.println("字符串转时间:" + date);

    // 如果字符串时间不是完整格式,例如2020-10
    //注意:如果字符串的格式为2020.02,没有完整日期,DateUtil.parse()会识别不出来,要通过后面加上格式样式才可以。
    String strTime2 = "2020-10";
    // 输出 2020-10-01 00:00:00
    Date date2 = DateUtil.parse(strTime2,"yyyy-MM");
    System.out.println("时间转字符串:" + date2);
    //SimpleDateFormat进行时间的转换
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
    //字符串转时间Date
    try {
        Date parse = format.parse("2022-03-31");
        //输出Fri Dec 03 00:00:00 CST 2021
        System.out.println(parse);
    } catch (ParseException e) {
        e.printStackTrace();
    }

3:自定义一个时间工具类

import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

public class DateUtils {
    /**
     * 获取指定日期的开始时间,即指定日期的凌晨
     * @param 	date
     * @return  Thu Mar 31 00:00:00 CST 2022
     */
    public static Date getStartDate(Date date) {
        Calendar instance = Calendar.getInstance();
        instance.setTime(date);
        instance.set(Calendar.HOUR_OF_DAY, 0);
        instance.set(Calendar.MINUTE, 0);
        instance.set(Calendar.SECOND, 0);
        return instance.getTime();
    }

    /**
     * 获取指定日期的结束时间 即指定日期的23:59:59
     * @param 	date
     * @return 	Thu Mar 31 23:59:59 CST 2022
     */
    public static Date getEndDate(Date date) {
        Calendar instance = Calendar.getInstance();
        instance.setTime(date);
        instance.set(Calendar.HOUR_OF_DAY, 23);
        instance.set(Calendar.MINUTE, 59);
        instance.set(Calendar.SECOND, 59);
        return instance.getTime();
    }

    /**
     * 获取过去或者未来任意天内的日期数组
     * @param intervals
     * @param flag
     * @return
     */
    public static ArrayList<Date> getDayList(Integer intervals, Boolean flag) {
        if (flag) {
            ArrayList<Date> pastDaysList = Lists.newArrayList();
            for (int i = 0; i < intervals; i++) {
                pastDaysList.add(getPastDate(i));
            }
            return pastDaysList;
        } else {
            ArrayList<Date> futureDaysList = Lists.newArrayList();
            for (int i = 0; i < intervals; i++) {
                futureDaysList.add(getFutureDate(i));
            }
            return futureDaysList;
        }
    }

    /**
     * 获取过去几天内的日期时间
     * @param 	past
     * @return	带有时分秒的具体时间
     */
    public static Date getPastDate(Integer past) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
        return calendar.getTime();
    }

    /**
     * 获取未来几天内的日期时间
     * @param 	past
     * @return	带有时分秒的具体时间
     */
    public static Date getFutureDate(Integer past) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + past);
        return calendar.getTime();
    }

	/**
     * 获取日期差
     * @param 	beforeDate,currentDate
     * @return	整数时间
     */
	public static int differentDays(Date beforeDate, Date currentDate) {
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(beforeDate);

        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(currentDate);
        int day1 = cal1.get(Calendar.DAY_OF_YEAR);
        int day2 = cal2.get(Calendar.DAY_OF_YEAR);

        int year1 = cal1.get(Calendar.YEAR);
        int year2 = cal2.get(Calendar.YEAR);
        if (year1 != year2)   //跨年
        {
            int timeDistance = 0;
            for (int i = year1; i < year2; i++) {
                if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)    //闰年
                {
                    timeDistance += 366;
                } else    //不是闰年
                {
                    timeDistance += 365;
                }
            }
            return timeDistance + (day2 - day1);
        } else    //同年
        {
            System.out.println("判断day2 - day1 : " + (day2 - day1));
            return day2 - day1;
        }
    }


}
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:44:40  更:2022-04-01 23:44:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 18:46:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码