Java中时间类的处理

Posted 木白星枝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中时间类的处理相关的知识,希望对你有一定的参考价值。

1.转换操作

首先要新建一个Data的时间类,这个类的具体操作可以百度

Date currentTime = new Date();

然后如果我们需要确定对应固定的时间格式的时候,我们就需要对时间进行转换。

用到SimpleDateFormat 类,具体详细的实现方法也可以百度,这里列出几个常见的。

Date now=new Date();

SimpleDateFormat CeshiFmt0=new SimpleDateFormat("Gyyyy年MM月dd日 HH时mm分ss秒");
System.out.println(CeshiFmt0.format(now));//公元2010年07月27日 09时19分29秒

SimpleDateFormat CeshiFmt1=new SimpleDateFormat("yyyy/MM/dd HH:mm"); 
System.out.println(CeshiFmt1.format(now));//2010/07/27 09:19

SimpleDateFormat CeshiFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(CeshiFmt2.format(now));//2010-07-27 09:19:29

SimpleDateFormat CeshiFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
System.out.println(CeshiFmt3.format(now));//2010年07月27日 09时19分29秒 星期二 

SimpleDateFormat CeshiFmt4=new SimpleDateFormat("yyyy/MM/dd E"); 
System.out.println(CeshiFmt4.format(now));//2010/07/27 星期二

SimpleDateFormat CeshiFmt5=new SimpleDateFormat( 
"一年中的第 D 天 ,第w个星期 ,一个月中第W个星期 ,k时 z时区");
System.out.println(CeshiFmt5.format(now));//一年中的第 208 天 ,第31个星期 ,一个月中第5个星期 ,9时 CST时区

通过上面的代码可以看出,我们要理解对应字符的意义,比如:yyyy,MM,dd,G,E等等。

像MM也可以只用M,区别在于,当实际月份是2月份时,MM会自动填充0,显示的是02,而M则不会,显示的只是2。

 具体的字符含义可以参考下面的表格和图片。

yyyy:年
MM:月
dd:日
hh:1~12小时制(1-12)
HH:24小时制(0-23)
mm:分
ss:秒
S:毫秒
E:星期几
D:一年中的第几天
F:一月中的第几个星期(会把这个月总共过的天数除以7)
w:一年中的第几个星期
W:一月中的第几星期(会根据实际情况来算)
a:上下午标识
k:和HH差不多,表示一天24小时制(1-24)。
K:和hh差不多,表示一天12小时制(0-11)。
z:表示时区  

2.关于其中是否要添加‘T’的操作

日期和时间的组合表示法编辑合并表示时,要在时间前面加一大写字母T

这些A——Z,a——z这些字母(不被单引号包围的)会被特殊处理替换为对应的日期时间,其他的字符串还是原样输出。

所以要在其中添加中文汉字可以不用带‘’单引号,如上面的例子,但是要添加固定的英文字符,则需要添加''单引号,假如要添加字符串aaa,则需要在aaa 的外面添加单引号即可,例如'aaa'。

 Date currentTime = new Date();
 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
//"yyyy-MM-dd HH:mm:ss"
String dateString = formatter.format(currentTime);

上面时java的数据处理,下面讲的是把java处理的数据传入到用C#语言写的代码中进行处理。 

然后这里猜测解释一下,这个日期类型的变量在处理其对应的字符串时,会把T自动转换成一个空格,如果有多个T就会报格式错误,如果有多余的空格他会自动处理成对应的数据类型。

例如:

2021-10-16T22:12:25.000的数据,存进去之后变成2021-10-16 22:12:25.000  (原数据有一个T)

2021 -10-16T22: 12:25.000的数据,存进去之后变成2021-10-16 22:12:25.000 (原数据多了几个空格)

2021-10-16TT22:12:25.000的数据就会报错。

虽然存进去之后显示的数据都是2021-10-16 22:12:25.000 

但是使用Newtonsoft.Json 转换DateTime类型时,若使用标准转换,则字符串内会有一个T(虽然再转换成DateTime没有问题)。

用微软的官方方法读取之后都会变成2021-10-16T22:12:25.000,这时,如果自己有需求就需要单独处理了。

以上是关于Java中时间类的处理的主要内容,如果未能解决你的问题,请参考以下文章

java中时间类(util Date)的后延与前推处理

Java中时间格式处理,指定N天/小时等之后的时间

Pyro4 介绍,利用其实现进程间类方法的互相调用

2246=时间日期格式转换(JAVA)

Python中父类和子类间类属性(非实例属性)的设置获取的传递

java易忘的一些方法集锦