学习Java的Date、Calendar日期操作
作者:白小衣 发布时间:2023-09-04 22:26:38
标签:Java,Date,Calendar
本文介绍了Java开发过程中日期相关操作,分享的代码如下:
package jse;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
/**
* 常用日期操作
*
* @author puck
* createDate 2015-07-30 22:54:38
*/
public class TestDate
{
public static void main(String[] args) throws ParseException, UnsupportedEncodingException
{
Calendar cal = Calendar.getInstance();
// cal.add(Calendar.DAY_OF_MONTH, -48);
System.out.println(dateToString(cal));
}
/**
* 日期格式化
* @param date
* @return
*/
public static String dateToString(Date date)
{
// SimpleDateFormat format = new SimpleDateFormat("y年MM月dd日 E HH时mm分ss秒", Locale.CHINA);
// SimpleDateFormat format = new SimpleDateFormat("y年M月d日 E H时m分s秒", Locale.CHINA);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); // example
return sdf.format(date);
}
/**
* 日期格式化
* @param date
* @return
*/
public static String dateToString(Calendar cal)
{
return dateToString(cal.getTime());
}
/**
* dateString 转 Calendar
*
* @param Date
* format:2015-06-16 date
* @return Calendar
* @throws ParseException
*/
public static Calendar dateStringToCalendar(String dateStr) throws ParseException
{
// Calendar cal = Calendar.getInstance();
// cal.clear();
// cal.set(Integer.parseInt(date.substring(0, 4)), Integer.parseInt(date.substring(5, 7)) - 1,
// Integer.parseInt(date.substring(8, 10)));
// return cal;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(dateStr);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal;
}
/**
* dateString 转 Date
*
* @param Date
* format:yyyy-MM-dd HH:mm:ss date
* @return Calendar
* @throws ParseException
*/
public static Date dateStringToDate(String date) throws ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.parse(date);
}
/**
* Date Convert to Calendar
*
* @param date
* @return
*/
public static Calendar dateToCalendar(Date date)
{
Calendar c1 = Calendar.getInstance();
c1.setTime(date);
return c1;
}
/**
* Calendar Convert To Date
* @param cal
* @return
*/
public static Date CalendarToDate(Calendar cal)
{
return cal.getTime();
}
/**
* 计算两个日期相差年月日
*
* @param Date
* c1
* @param Date
* c2
* @return int[]{year, month, day}
*/
public int[] calculateDifferDay(Date d1, Date d2)
{
Calendar c1 = Calendar.getInstance();
c1.setTime(d1);
Calendar c2 = Calendar.getInstance();
c1.setTime(d2);
return calculateDifferDay(c1, c2);
}
/**
* 计算两个日期相差年月日
*
* @param Calendar
* c1
* @param Calendar
* c2
* @return int[]{year, month, day}
*/
public int[] calculateDifferDay(Calendar c1, Calendar c2)
{
int[] p1 = { c1.get(Calendar.YEAR), c1.get(Calendar.MONTH), c1.get(Calendar.DAY_OF_MONTH) };
int[] p2 = { c2.get(Calendar.YEAR), c2.get(Calendar.MONTH), c2.get(Calendar.DAY_OF_MONTH) };
System.out.println("p1[0]=" + p1[0] + " p1[1]=" + p1[1] + " p1[2]=" + p1[2]);
System.out.println("p2[0]=" + p2[0] + " p2[1]=" + p2[1] + " p2[2]=" + p2[2]);
int year = p2[0] - p1[0];
int month = (p2[0] * 12) + p2[1] - ((p1[0] * 12) + p1[1]);
int day = (int) ((c2.getTimeInMillis() - c1.getTimeInMillis()) / (24 * 60 * 60 * 1000));
return new int[] { year, month, day };
}
/**
* 获取日期所在周的第一天
*
* @param c
* @return
*/
public static Calendar getLastDayOfWeek(Calendar c)
{
// SimpleDateFormat format2 = new SimpleDateFormat("y年M月d日 E H时m分s秒", Locale.CHINA);
// System.out.println("当前时间:" + format2.format(c.getTime()));
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
// System.out.println("周一时间:" + format2.format(c.getTime()));
return c;
}
/**
* 日期加减
* @param c
* @param day
* @return
*/
public static Calendar addOrDecreaseDay(Calendar c, int day)
{
c.add(Calendar.DAY_OF_MONTH, day);
return c;
}
/**
* 获取月最后一天
* @param year
* @param month
* @return
*/
public static int getLastDayOfMonth(int year, int month)
{
Calendar c = Calendar.getInstance();
c.set(year, month - 1, 1);
return c.getActualMaximum(Calendar.DAY_OF_MONTH);
}
/**
* 获取月最后一天
* @param cal
* @return
*/
public static int getLastDayOfMonth(Calendar cal)
{
return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
}


猜你喜欢
- 什么是AppWidget?AppWidget就是我们平常在桌面上见到的那种一个个的小窗口,利用这个小窗口可以给用户提供一些方便快捷的操作。
- 背景环境需要设置代理才能够访问外部网络,如果只是运行java程序来访问网络,我们可以通过java -jar test.jar -Dproxy
- 关于Context我们首先应该知道:(1)它描述的是一个应用程序环境的信息,即上下文。(2)该类是一个抽象(abstract class)类
- 组合模式及其在JDK源码中的运用 前言组合和聚合什么是组合模式示例透明组合模式透明组合模式的缺陷安全组合模式 组合模式角色组合模式在JDK源
- 写在前面项目中直接引用或者直接编译源码得到的ijkplayer在播放mkv文件时出现(-10000)的错误,去项目github查看了才知道,
- 本文实例为大家分享了Java使用单链表实现约瑟夫环的具体代码,供大家参考,具体内容如下构建一个单向的环形链表思路1.先创建第一个节点, 让f
- 初学线程时,总是将 run 方法和 start 方法搞混,虽然二者是完全不同的两个方法,但刚开始使用时很难分清,原因就是因为初次使用时效果貌
- c#将字符串转换为大写或小写using System;using System.Collections.Generic;using Syst
- 一、WebSocket简介WebSocket协议通过在客户端和服务端之间提供全双工通信来进行Web和服务器的交互功能。在WebSocket应
- 在【解决方案资源管理器】中找到Form1.cs,单击,快捷键F2重命名为“Login.cs”(命名很
- 使用官方的刷新控件SwipeRefreshLayout来实现下拉刷新,当RecyclerView滑到底部实现下拉加载(进度条效果用Recyc
- 先给大家这是下效果图:谷歌提供的v4包,ViewPager在布局文件中,先添加<android.support.v4.view.Vie
- 这篇文章主要介绍了Spring Boot项目维护全局json数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 前言:1.最近项目上在测试人员压测过程中发现了OOM问题,项目使用springboot搭建项目工程,通过查看日志中包含信息:unable t
- 本文实例为大家分享了java将一个目录下的所有文件复制n次的具体代码,供大家参考,具体内容如下1. 文件复制示意图 2.java程
- Java 字符串反转问题:给一个字符串,比如 “I love china”, 把字符反转后变成 “china love I”思路
- 工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式
- 这次主要是练习一下Android的自定义view和path的相关使用,所以做了一个简单的demo:自定义一个view,并用path在上面画一
- 本文实例讲述了Android实现跑马灯效果的方法。分享给大家供大家参考。具体如下:运行效果截图如下:直接在布局里写代码就好了:<Tex
- 简介switch的新特性可是源远流长,早在JDK 12就以预览功能被引入了,最终在JDK 14成为了正式版本的功能:JEP 361: Swi