Java-- 日期的运算

目录

1.Calendar 转化 String

2.String 转化Calendar

3.Date 转化String

4.String 转化Date

5.Date 转化Calendar

6.Calendar转化Date

7.String 转成 Timestamp

8.Date 转 TimeStamp

9代码示例:

10.将日期拆解出来:

11.求n天后的日期

12.JAVA日期加减运算 .

12.1.用java.util.Calender来实现

12.2.用java.text.SimpleDateFormat和java.util.Date来实现

12.3 用GregorianCalendar实现

13.计算两个日期之间间隔的天数?


1.Calendar 转化 String
Calendar calendat = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(calendar.getTime());
2.String 转化Calendar
String str="2012-5-27";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date date =sdf.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
3.Date 转化String
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
String dateStr=sdf.format(new Date());
4.String 转化Date
String str="2012-5-27";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date date= sdf.parse(str);
5.Date 转化Calendar
Calendar calendar = Calendar.getInstance();
calendar.setTime(new java.util.Date());
6.Calendar转化Date
Calendar calendar = Calendar.getInstance();
java.util.Date date =calendar.getTime();
7.String 转成 Timestamp
Timestamp ts = Timestamp.valueOf("2012-1-14 08:11:00");
8.Date 转 TimeStamp
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(new Date());
Timestamp ts = Timestamp.valueOf(time);

------------------------------------------------------------------------------------------------

9代码示例:
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; public class HelloWorld { public static void main(String[] args) { //指定时间输出格式 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date dt = new Date(); System.out.println("当前时间:" + sdf.format(dt)); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(dt);         rightNow.add(Calendar.YEAR,-1);//当时日期减1年 System.out.println("减1年:" + sdf.format(rightNow.getTime())); rightNow.add(Calendar.MONTH,3);//(在刚才的结果上)再加3个月 System.out.println("再加3个月:" + sdf.format(rightNow.getTime())); rightNow.add(Calendar.DAY_OF_YEAR,10);//(在刚才的结果上)再加10天         System.out.println("再加10天:" + sdf.format(rightNow.getTime())); } 
} 输出结果:当前时间:2013-02-21 09:40:49
减1年:2012-02-21 09:40:49
再加3个月:2012-05-21 09:40:49
再加10天:2012-05-31 09:40:49

----------------------------------------------

10.将日期拆解出来:


 1  Date dt = new Date();        
 2  Calendar calendar = Calendar.getInstance();
 3  calendar.setTime(dt);     
 4  System.out.println("当前日期:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(dt));//当前日期:2013-02-28 16:22:37
 5  System.out.println("年:" + calendar.get(Calendar.YEAR));//年:2013
 6  System.out.println("月:" + (calendar.get(Calendar.MONTH)+1));//月:2 -注:月份是从0开始的
 7  System.out.println("日:" + calendar.get(Calendar.DATE));//日:28
 8  System.out.println("时(12小时制):" + calendar.get(Calendar.HOUR));//时:4(12小时制)
 9  System.out.println("时(24小时制):" + calendar.get(Calendar.HOUR_OF_DAY));//时:16(24小时制)
10  System.out.println("分:" + calendar.get(Calendar.MINUTE));//分:30
11  System.out.println("秒:" + calendar.get(Calendar.SECOND));//秒:19
12  System.out.println("本月第" + calendar.get(Calendar.WEEK_OF_MONTH) + "周");//本月第5周
13  System.out.println("本年第" + calendar.get(Calendar.WEEK_OF_YEAR) + "周");//本年第9周    

---------------------------------------------------------------------------------------------------

11.求n天后的日期

用Calendar类,这个类里有一个方法,可以在时间上加上任意天数,就可以得到相应的日期

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class NDays { public static void main(String[] args) { Date date = new Date();   System.out.println((new SimpleDateFormat("yyyy-MM-dd")).format(date)); Calendar cal = Calendar.getInstance(); cal.setTime(date);  cal.add(Calendar.DATE, 100);  System.out.println((new SimpleDateFormat("yyyy-MM-dd")).format(cal.getTime()));}
}
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;public class date {public static void main(String[] args) throws ParseException {System.out.println(datechange(new GregorianCalendar()));//将输入的Calendar转化成yyyy-mm-dd格式的StringSystem.out.println(String.valueOf(dateminus("2012-9-1")));//求出输入的yyyy-mm-dd格式的String与今天的差值System.out.println(dateadd(90));//计算出今天起,输入的int天后的日期}
12.JAVA日期加减运算 .
12.1.用java.util.Calender来实现
Calendar calendar=Calendar.getInstance();   calendar.setTime(new Date()); System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//今天的日期 calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+1);//让日期加1  System.out.println(calendar.get(Calendar.DATE));//加1之后的日期Top 
12.2.用java.text.SimpleDateFormat和java.util.Date来实现
Date d=new Date();   SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");   System.out.println("今天的日期:"+df.format(d));   System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - 2 * 24 * 60 * 60 * 1000)));  System.out.println("三天后的日期:" + df.format(new Date(d.getTime() + 3 * 24 * 60 * 60 * 1000)));
12.3 用GregorianCalendar实现
GregorianCalendar gc=new GregorianCalendar(); 
gc.setTime(new Date); 
gc.add(field,value); 
//value为正则往后,为负则往前 
//field取1加1年,取2加半年,取3加一季度,取4加一周,取5加一天.... /*
*java中对日期的加减操作
*gc.add(1,-1)表示年份减一.
*gc.add(2,-1)表示月份减一.
*gc.add(3.-1)表示周减一.
*gc.add(5,-1)表示天减一.
*以此类推应该可以精确的毫秒吧.没有再试.大家可以试试.
*GregorianCalendar类的add(int field,int amount)方法表示年月日加减.
*field参数表示年,月.日等.
*amount参数表示要加减的数量.
*
* UseDate.java 测试如下:
*/
package temp.util;import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.text.SimpleDateFormat;
public class UseDate {Date d=new Date();GregorianCalendar gc =new GregorianCalendar();SimpleDateFormat sf  =new SimpleDateFormat("yyyy-MM-dd");public String getYears(){gc.setTime(d);gc.add(1,+1);gc.set(gc.get(Calendar.YEAR),gc.get(Calendar.MONTH),gc.get(Calendar.DATE));return sf.format(gc.getTime());}public String getHalfYear(){gc.setTime(d);gc.add(2,+6);gc.set(gc.get(Calendar.YEAR),gc.get(Calendar.MONTH),gc.get(Calendar.DATE));return sf.format(gc.getTime());}public String getQuarters(){gc.setTime(d);gc.add(2,+3);gc.set(gc.get(Calendar.YEAR),gc.get(Calendar.MONTH),gc.get(Calendar.DATE));return sf.format(gc.getTime());}public String getLocalDate(){return sf.format(d);}public static  void  main(String[] args){UseDate ud= new UseDate();System.out.println(ud.getLocalDate());System.out.println(ud.getYears());System.out.println(ud.getHalfYear());System.out.println(ud.getQuarters());}}//----------------------------------------------------
GregorianCalendar gc=new GregorianCalendar();try {gc.setTime( new SimpleDateFormat("yyyyMM").parse("200901"));gc.add(2, -Integer.parseInt("7"));} catch (ParseException e) {e.printStackTrace();}System.out.println(new SimpleDateFormat("yyyyMM").format(gc.getTime())); 运行结果:200806
13.计算两个日期之间间隔的天数?
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");     
long to = df.parse("2008-4-25").getTime();     
long from = df.parse("2008-1-20").getTime();     
System.out.println((to - from) / (1000 * 60 * 60 * 24)); 

  //以下计算日期差(标的日-今天)

//缺陷:S传入时必须已经满足yyyy-mm-dd的格式。public static long dateminus(String S) throws ParseException{  DateFormat format = new SimpleDateFormat("yyyy-MM-dd");Date dt=format.parse(S);Calendar endDate=Calendar.getInstance();endDate.setTime(dt);Long e=endDate.getTimeInMillis();Calendar currentDate=Calendar.getInstance();currentDate.setTime(new Date());Long c=currentDate.getTimeInMillis(); Long t=e-c;return format(t);  }public static long format(long ms) {//将毫秒数换算成x天x时x分x秒x毫秒  int ss = 1000;int mi = ss * 60;int hh = mi * 60;int dd = hh * 24;long day = ms / dd+1;return day;}


//以下计算日期和,计算出从今天起的day天后的日期。

public static String dateadd(int day){Calendar c=new GregorianCalendar();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");String s=String.valueOf(datechange(c));String S=null;Date d;try {d = df.parse(s);for (int i = 0; i < day; i++) {d=new Date(d.getTime()+60*60*24*1000);//由于当day大于25时,会溢出(int放不下),所以只能每次只加1天,加day次。}S=df.format(d);} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return S;}


//以下将传入的Calendar型数据转换为yyyy-mm-dd形式

public static String datechange(Calendar c){return String.valueOf(c.get(c.YEAR))+"-"+(String.valueOf(c.get(c.MONTH)+1).length()==1?"0"+String.valueOf(c.get(c.MONTH)+1):String.valueOf(c.get(c.MONTH)+1))+"-"+(String.valueOf(c.get(c.DAY_OF_MONTH)).length()==1?"0"+String.valueOf(c.get(c.DAY_OF_MONTH)):String.valueOf(c.get(c.DAY_OF_MONTH)));}


//以下将数据库中读出的带时、分、秒的日期截断为yyyy-mm-dd形式

public static String dateshort(String S){return S.substring(0,10);}public static int getyear(String S){return Integer.parseInt(S.substring(0, 4));}
}


取某天的方法(忽略具体时间)  

select * from table where DATE(reg_time)="2014-10-22"
//        String startTimeString = date+" 00:00:00";
//        String ednTimeString = date+" 23:59:59";

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java系列-LinkedList源码

1.双链表结构 public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, java.io.Serializable{transient int size 0;transient Node<E> first;transient Node<E> last;public LinkedLis…

python项目源码保护——代码混淆

什么是代码混淆 代码混淆是指将代码进行加密、压缩、乱序等操作&#xff0c;使得代码难以被阅读和理解&#xff0c;从而达到保护代码的目的。代码混淆可以有效地防止代码被反编译和盗用&#xff0c;提高代码的安全性。 pyobfuscate pyobfusate通过多种方式转换源代码。其中一…

Scan Context / Scan Context ++ 论文和源码阅读

Title: Scan Context / Scan Context 论文和源码阅读 文章目录 前言I. Scan Context 的构造A. 论文内容B. 源码内容 2. Ring Key/Retrieval Key 的计算A. Ring KeyB. Retrieval Key 3. KD 树搜索 —— 第一阶段搜索A. KD 树构建B. KD 树搜索 4. Scan Context 距离搜索 —— 第…

基于mps的pytorch 多实例并行推理

背景 大模型训练好后&#xff0c;进行部署时&#xff0c;发现可使用的显卡容量远大于模型占用空间 。是否可以同时加载多个模型实例到显存空间&#xff0c;且能实现多个实例同时并发执行&#xff1f;本次实验测试基于mps的方案&#xff0c;当请求依次过来时&#xff0c;多个相…

一种LED驱动专用控制电路方案

一、基本的概述 TM1651 是一种带键盘扫描接口的LED&#xff08;发光二极管显示器&#xff09;驱动控制专用电路&#xff0c;内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。本产品性能优良&#xff0c;质量可靠。采用SOP16/DIP16的封装形式。 二、特性说…

整体迁移SVN仓库到新的windows服务器

一、背景 公司原有的SVN服务器年代比较久远经常出现重启情况&#xff0c;需要把SVN仓库重新迁移到新的服务器上&#xff0c;在网上也搜到过拷贝Repositories文件直接在新服务器覆盖的迁移方案&#xff0c;但考虑到原有的操作系统和现有的操作系统版本不一致&#xff0c;SVN版本…

获取窗口中文标题栏GetWindowText()

GetWindowText(hwnd, lpString, len)会根据传入的第二个参数lpString 判断是ASCII或者Unicode编码选择调用GetWindowTextA(hwnd, lpString, len)&#xff0c;还是GetWindowTextW(hwnd, lpString, len)&#xff0c;所以想获取中文标题直接调用GetWindowTextW() ASCII GetWindowT…

frp 配置内网访问

frp介绍 frp 是一个开源、简洁易用、高性能的内网穿透软件&#xff0c;支持 tcp, udp, http, https 等协议。frp 项目官网是 https://github.com/fatedier/frp 下载地址&#xff1a; https://github.com/fatedier/frp/releases frp工作原理 服务端运行&#xff0c;监听一个…

分治算法——75. 颜色分类

文章目录 &#x1f33f;0. 分治&#x1f33b;1. 题目&#x1f33c;2. 算法原理&#x1f334;3. 代码实现 &#x1f33f;0. 分治 分治分治&#xff0c;顾名思义分而治之&#xff0c;将一个大问题转换成若干个子问题&#xff0c;再将这些子问题的基础上继续划分成更小的子问题&a…

【新手解答3】深入探索 C 语言:头文件提供必要的接口、源文件保持实现细节的私有性 + 进一步学习的方向 + 如何快速编写程序并最终能制作小游戏

C语言的相关问题解答 写在最前面问题1&#xff1a;头文件提供必要的接口、源文件保持实现细节的私有性封装在头文件中的作用源文件中的“封装”总结 问题2&#xff1a;接下来的学习方向问题3&#xff1a;如何快速编写程序并最终能制作小游戏1. 基本编程概念2. 数组和基本算法3.…

PyQt基础_011_对话框类控件QMessage

基本功能 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class WinForm( QWidget): def __init__(self): super(WinForm,self).__init__() self.setWindowTitle("QMessageBox") self.resize(300, 100) self.myButt…

EG20网口远程下载程序使用案例

EG20网口远程下载程序使用案例 前言&#xff1a;本文档主要说明了使用蓝蜂虚拟网络工具通过EG20网关的网口&#xff08;LAN口&#xff09;远程给PLC下载程序的步骤及其注意事项。使用蓝蜂虚拟网络工具&#xff0c;不仅支持程序的远程下载&#xff0c;同样支持程序的远程上传与…

爬虫源代码

public class Spider implements Runnable {private ArrayList urls; //URL列表private HashMap indexedURLs; //已经检索过的URL列表private int threads ; //初始化线程数 public static void main(String argv[]) throws Exception {if(argv[0] null){System.out.printl…

【SA8295P 源码分析】136 - QNX 如何抓取系统 log 方法 之 网络部分日志抓取方法

【SA8295P 源码分析】136 - QNX 如何抓取系统 log 方法 之 网络部分日志抓取方法 一、slog2info二、获取当前系统网络信息三、tracelogger四、qscan.sh : 用于收集 qnx 文件系统 权限、checksums 等信息系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总》 本文链…

【Node.js后端架构:MVC模式】基于expres讲解

Node.js后端架构&#xff1a;MVC模式 什么是MVC MVC (Model-View-Controller) 是一种软件设计模式&#xff0c;用于将应用程序的逻辑分离成三个不同的组件&#xff1a;模型、视图和控制器。 模型&#xff08;Model&#xff09;负责处理应用程序的数据逻辑。它负责从数据库或其…

21、LED点阵屏显示图形动画

c51的sfr、sbit sfr:特殊功能寄存器声明 例如&#xff1a;sfr P00x80 声明P0口寄存器&#xff0c;物理地址为0x80 sbit:特殊位声明 例如&#xff1a;sbit p0_1 0x81; 或 sbit p0_1 p0^1; 声明P0寄存器的第一位 可位寻址、不可位寻址&#xff1a;在单片机系统中&#xff0c;操…

JS事件循环详解

前言 进程 程序运行需要其专属的内存空间&#xff0c;可以把这块内存空间简单理解为进程。 下图每个颜色块都可视为一个应用&#xff0c;每个应用至少应有一个进程&#xff0c;进程之间相互独立&#xff0c;即使想要通信&#xff0c;也需要双方同意。 线程 有了进程后&…

二次元检测设备导轨修复指南

二次元检测设备是一种高精度的测量仪器&#xff0c;用于检测物体表面的形状、尺寸和精度等。直线导轨是二次元检测设备中最重要的组成部分之一&#xff0c;它的精度和稳定性直接影响到设备的测量结果和可靠性&#xff0c;因此&#xff0c;对导轨进行修复和保养是非常重要的。 直…

基于Java SSM移动电源租赁系统

涉及的知识点&#xff1a;Java程序设计基础知识、类的创建、对象的使用、面向对象继承、面向对象多态性、抽象类和接口、集合与泛型、文件与输入输出流操作、异常处理与日志记录、Java GUI 、事件处理、Java数据库编程。 一、实验目的 &#xff08;1&#xff09;掌握Java编程…

Linux删除了大文件为什么磁盘空间没有释放?

某天&#xff0c;收到监控系统的告警信息&#xff0c;说磁盘空间占用过高&#xff0c;登上服务器&#xff0c;使用 df -h 一看&#xff0c;发现磁盘占用率已经 96%了&#xff1a; 通过查看 /usr/local/nginx/conf/vhost/xxx.conf 找到 access_log 和 error_log 的路径&#x…