datetime、timestamp、date、datetime、Calendar(Java)

datetime:

1.允许为空值、可以自定义值,系统不会自动修改其值。

2.不可以设定默认值,所以在不允许为空值的情况下,所以手动指定datetime字段的值才能成功插入数据。

3.虽然不可以设定默认值,但是可以指定datetime字段的值的时候使用now()变量来自动插入系统的当前时间。

 显示格式 YYYY-MM-DD HH:mm:ss 显示范围 1601-01-01 到 9999-01-01 (sql)

end:datetime类型适合用来记录数据的原始的创建时间,因为无论你怎么更改记录中其他字段的值,datetime字段的值都不会改变,除非你手动更改它。

timestamp:

1.允许为空值,但是不可以自定义值,所以为空值时没有任何意义。

2.默认值为CURRENT_TIMESTAMO(),其实也就是当前的系统时间。

3.数据库会自动修改其值,所以在插入记录时不需要指定timestamp字段的名称和timestamp字段的值,你只需要在设计表的时候添加一个timestamp字段即可,对应的记录timestamp值 会自动更新为当前的系统时间。

  显示格式 YYYY-MM-DD HH:mm:ss 显示范围 1601-01-01 00:00:00 到 9999-12-31 23:59:59 (sql)

end:timestamp类型适合记录数据的最后修改时间,因为只要你更改了记录中的其他字段的值,timestamp字段的值都会自动更新

date:

显示格式 YYYY-MM-DD 显示范围 1601-01-01 00:00:00 到 9999-12-31 23:59:59 (sql)

time:

    显示格式 HH:mm:ss 显示范围 00:00:00 到  23:59:59 (sql)

calendar:

在处理日期和时间时,系统推荐使用Calendar进行实现。再设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一点。

Calednar类时抽象类,且Calendar类的构造方法时protected的,所以无法使用Calendar类的构造方法来创建对象,API提供了getInstance方法用来创建对象。

使用该方法获取的Calendar对象就代表当前的系统时间,由于Calendar类tostring实现的没有Date类那么直观,所以直接输出Calendar类的对象意义不大。

Calendar c1=Calendar.getInstance();

   c1.set(2019,12-1,21);

使用Calendar类代表特定的时间,首先需要创建一个Calendar的对象,然后再谁都能该对象中的年月日参数来完成。

以上示例设置的时间为2019年12月21日。其参数的结构和Date类不一样,Calendar类中的年份的数值直接书写,月份的值为实际的月份减1,日期的值是实际日期的值。

Calendar.YEAR:年份、Calendar.MONTH:月份、Calendar.DATE:日期

Calendar.DAY_OF_MONTH:日期,和上面的字段完全相同、Calendar.HOUR:12小时制的小时数、Calendar.HOUR_OF_DAY:24小时制的小时数

Calendar.MINUTE:分钟、Calendar.SECOND:秒、Calendar.DAY_OF_WEEK:星期几

c1.set(Calendar.DATE,10);

    该代码的作用是将c1对象代表的时间中日期设置为10号,其他所有的数值会被重新计算,例如星期几以及对应的相对时间数值等。
    Caledar c2=Calendar.getInstance();

int year=c2.get(Calendar.YEAR); int month = c2.get(Calendar.MONTH) + 1; int date = c2.get(Calendar.DATE);  int hour = c2.get(Calendar.HOUR_OF_DAY);

    int minute = c2.get(Calendar.MINUTE); int second = c2.get(Calendar.SECOND); int day = c2.get(Calendar.DAY_OF_WEEK);

get方法的声明如下: public int get(int field)

其中参数field代表需要获得的字段的值,字段说明和上面的set方法保持一致。获得的月份为实际的月份值减1,获得的星期的值和Date类不一样。

在Calendar类中,周日是1,周一是2,周二是3,以此类推。

add方法:

public abstract void add(int field,int amount)

该方法的作用是在Calendar对象中的某个字段上增加或减少一定的数值,增加是amount的值为正,减少时amount的值为负。

c2.add(Calendar.DATE, 100);

这里add方法是指在c2对象的Calendar.DATE,也就是日期字段上增加100,类内部会重新计算该日期对象中其它各字段的值,从而获得100天以后的日期

after方法:

public boolean after(Object when)

该方法的作用是判断当前日期对象是否在when对象的后面,如果在when对象的后面则返回true,否则返回false。例如:

 Calendar c4 = Calendar.getInstance();

   c4.set(2009, 10 - 1, 10);

   Calendar c5 = Calendar.getInstance();

   c5.set(2010, 10 - 1, 10);

   boolean b = c5.after(c4);

在该示例代码中对象c4代表的时间是2009年10月10号,对象c5代表的时间是2010年10月10号,则对象c5代表的日期在c4代表的日期之后,所以after方法的返回值是true。

另外一个类似的方法是before,该方法是判断当前日期对象是否位于另外一个日期对象之前。

getTime方法:

public final Date getTime()

该方法的作用是将Calendar类型的对象转换为对应的Date类对象,两者代表相同的时间点。

类似的方法是setTime,该方法的作用是将Date对象转换为对应的Calendar对象,该方法的声明如下:

public final void setTime(Date date)

转换的示例代码如下:

public final void setTime(Date date)

转换的示例代码如下:

   Date d = new Date();

  Calendar c6 = Calendar.getInstance();

  //Calendar类型的对象转换为Date对象

  Date d1 = c6.getTime();

  //Date类型的对象转换为Calendar对象

  Calendar c7 = Calendar.getInstance();

  c7.setTime(d);

Calendar对象和相对时间之间的互转:

  Calendar c8 = Calendar.getInstance();

  long t = 1252785271098L;

  //将Calendar对象转换为相对时间

  long t1 = c8.getTimeInMillis();

  //将相对时间转换为Calendar对象

  Calendar c9 = Calendar.getInstance();

  c9.setTimeInMillis(t1);

在转换时,使用Calendar类中的getTimeInMillis方法可以将转换为相对时间。在将相对时间转换为Calendar对象时,首先要创建一个Calendar对象,然后再使用Calendar类的setTimeInMillis方法设置时间即可。

原文地址:https://www.cnblogs.com/BounceGuo/p/12077569.html

时间: 2024-11-07 15:00:15

datetime、timestamp、date、datetime、Calendar(Java)的相关文章

解析、查找数组中重复出现的元素(Java)

 解析.查找数组中重复出现的元素,Java实现. <数据结构与算法分析:解析.查找数组中重复出现的元素> 问题描述:一个结构化数据,假设事先按照某种顺序排好序(比如升序)的一个数组中,无规则.重复出现若干次某个相同元素,形如有序数组data: data = {  "A", "A", "B", "C", "C", "D", "D" , "D&q

八、Linux精简系统和内核管理裁剪(二)

八.内核服务管理 内核切换 chroot  initramfs(内核所在的目录) [[email protected] initramfs]# cd .. [[email protected] ~]# chroot initramfs/ bash-4.1# 自定义启动服务 1.编辑启动脚本文件,可以模仿/etc/rc.d/init.d/目录下的脚本文件. 2.cp启动脚本到/etc/rc.d/init.d/目录下. 3.配置启动项,chkconfig -add scriptname 手工编写启动

[转]SRTM、ASTER GDEM等全球数字高程数据(DEM)下载方式简介

之前写过一篇短文对比过几种数字高程数据的区别:5种全球高程数据对比,这篇文章简要介绍下如何下载这些数据. 1.DLR的数字高程数据.该数据也是SRTM(shuttle radar topography mission,航天飞机雷达地形测绘任务)数据,一般提到SRTM都是指NASA在2000年利用奋进号跑出来的数字高程数据,覆盖全面.公开数据早.精度在今天仍相当可观,所以更加有名.但SRTM并不只专指这一家,当年德国航天局DLR同在奋进号上用自己的雷达搞地形测绘,美国人用的C波段雷达,德国人用的X

C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(一)

一.ZXing.Net 源代码地址:http://zxingnet.codeplex.com/ 也可以使用Nuget包管理,添加如图: 说明:ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码.目标是能够对QR编码.Data Matrix.UPC的1D条形码进行解码. 其提供了多种平台下的客户端包括:J2ME.J2SE和Android.现在也有了对应的.Net版本 二.生成二维码 将字符编码时可以指定字符格式:默认为ISO-8859-1英文字符集,但一般移动设备常用UTF-8字符

[Ruby on Rails系列]6、一个简单的暗语生成器与解释器(上)

[0]Ruby on Rails 系列回顾 [Ruby on Rails系列]1.开发环境准备:Vmware和Linux的安装 [Ruby on Rails系列]2.开发环境准备:Ruby on Rails开发环境配置 [Ruby on Rails系列]3.初试Rails:使用Rails开发第一个Web程序 [Ruby on Rails系列]4.专题:Rails应用的国际化[i18n] [Ruby on Rails系列]5.专题:Talk About SaSS [1]任务目标 本次主要是要实现一

JDBC&amp;&amp;c3p0、事务、批处理、多线程 于一体的经典秘方QueryRunner (common-dbutils)

目录: 基础篇_功能各自回顾 JDBC基础代码回顾(使用JdbcUtils工具简化) c3p0数据库连接池的使用(使用JdbcUtils工具简化) 大数据的插入(使用c3p0+JdbcUtils工具简化) 批处理操作(使用c3p0+JdbcUtils工具简化) 数据库中的事务处理(使用c3p0+JdbcUtils工具简化) 多线程的并发控制 进阶篇_迈向标准开发        自己编写dbutils工具( QueryRunner .TxQueryRunner和JdbcUtils)   (本文核心

生成、打包、部署和管理应用程序及类型(二)

1    生成.打包.部署和管理应用程序及类型 1.1   .net framework 部署目标 Windows一直不稳定和过于复杂(其实也很封闭,逐渐开放,如core),微软认为主要原因是: (1)应用程序来自微软或其他厂商的dll,多个厂商的代码带来复杂性.安装新程序会破坏原有程序,带来dll hell. (2)安装复杂性.大多数应用安装的时候会影响到系统的全部组件. (3)安全性.安装程序会带来各种文件,许多不同公司开发的. 1.2   将类型生成到模块中 响应文件包含一组编译器命令开光

黑马程序员(Java)----API之常用类(Math、Random、System、BigInteger、Date和DateFormat、Calendar)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 4.9  Math Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数. 4.9.1 常用变量和方法 成员变量: public static final double PI public static final double E 成员方法: public static int abs(int a):绝对值 public static double ceil(dou

MySql中的时间类型datetime,timestamp,date,year比较

MySQL日期类型.日期格式.存储空间.日期范围比较.日期类型        存储空间       日期格式                 日期范围------------ ---------   --------------------- -----------------------------------------datetime       8 bytes   YYYY-MM-DD HH:MM:SS   1000-01-01 00:00:00 ~ 9999-12-31 23:59:5