当前位置: 首页 > news >正文

四川省微信网站建设推广深圳网站制作 论坛

四川省微信网站建设推广,深圳网站制作 论坛,大桥外语官方网站星做宝贝,linux增加网站Java中为处理日期和时间提供了大量的API#xff0c;确实有把一件简单的事情搞复杂的嫌疑#xff0c;各种类#xff1a;Date Time Timestamp Calendar...#xff0c;但是如果能够看到时间处理的本质就可以轻松hold住这堆东西了。常用的类表示类java.util.Date :能够准确记录…Java中为处理日期和时间提供了大量的API确实有把一件简单的事情搞复杂的嫌疑各种类Date Time Timestamp Calendar...但是如果能够看到时间处理的本质就可以轻松hold住这堆东西了。常用的类表示类java.util.Date :能够准确记录到毫秒级别的时间表示类但是其中的各种get set(修改时间或者获取时间中某一个特殊参数)都已经被废弃。java.sql.Date :为数据库提供的日期类继承自util包中的Date但是这个类只能够操作日期不能读取或者修改时间。sql和util中Date内部进行存储的long都可以保存到毫秒级别java.sql.Time :为数据库提供的时间类和Date相反它只能获取和操作时间相关的信息。java.sql.Timestamp:时间戳继承util.Date它不仅能够完美支持util.Date的功能而且可以支持到纳秒级别(10^-9 s)。工具类Calendar:主要用来操作一个Date类型提供了一系列接口来获取或修改其中的信息。TimeZone:用来配合Calendar 操作Date主要是考虑时区的问题值得注意的是在Date中存储的信息是一个绝对标准时间(稍后说明)而如果需要进行时区的转化那么只需要配合此类即可。SimpleDateFormat:常用的格式化Date的工具主要是进行String和日期之间的互换。基本概念时间的来源注意这里并不是讨论一个哲学的问题在大部分的编程语言中我们都是采用从1970-01-01 00:00:00.000 开始至今的毫秒差作为表示时间的数值这个时间是绝对公立的它和时区没有任何关系。在Java中任何时间的表示类的底层存储的毫秒数都是一个这样的标准时间。在java中获取当前时间接口是System.currentTimeMillis()。值得一提的是Java还提供了一个更加精确的时间System.nanoTime()获取一个时间精确到纳秒但是它并不是一个当前的精确时间而是JVM提供的一个时间它的主要用途是来精确衡量两个时间段之间的时间如计算一段代码的执行时间long startTime  System.nanoTime();   // ... the code being measured ...   long estimatedTime  System.nanoTime() - startTime;可以比较两个接口返回的内容System.currentTimeMillis():1429108246639System.nanoTime():1429108246640(ms)089000-------多了6位UTC和GMT这两个标准唯一不同之处在于UTC是基于GMT进行微调之后的一个时间本文不去深究这两者的差别在此认为这两者是一个东西。初中地理教过我们地球是24个时区东部和西部各12个时区的基准点是伦敦(基准UTC)往东会领先UTC往西会落后UTC。如北京属于东八区那么我们的时间会领先基准也就是我们在早上9点时伦敦是早上1点。如果我们在不同时区接发邮件的时候可以发现这个问题。这个时间是我收到一份来自华盛顿的邮件的时间2014年1月23日(星期四) 晚上7:29 (UTC-05:00 华盛顿、多伦多、古巴、智利时间)这里我们可以在邮件时间后面发现UTC-05:00说明这里是落后UTC基准5个小时。注意前面的时间是发件人的本地时间如果转化成北京所在时区的时间应该是加上13h那我收到这封邮件的本地时间是2014-01-24 星期五早上8:29。再谈TimeStamp前面说了TimeStamp能够精确到纳秒那它是怎么做到的呢由于TimeStamp继承自Date它把整数秒存储在超类中而在子类中专门用一个long类型存储零的秒数:nanos需要注意除非你显示去调用TimeStamp的这个构造器:public Timestamp(int year, int month, int date, int hour, int minute, int second, int nano)显示去指定nano的值否则这个构造器的参数public Timestamp(long time)的单位实际上是毫秒。API的使用最后再来说说日期时间的操作接口过程基本如下图           SimpleDateFormat   Date    CalendarDate负责存储一个绝对时间并对两边提供操作接口。Calendar负责对Date中特定信息比如这个时间是改年的第几个星期此外还可以通过set,add,roll接口来进行日期时间的增减。SimpleDateFormat主要作为一些格式化的输入输出。SimpleDateFormatSimpleDateFormat的构造器接受一个String pattern其中的pattern是预定义的G 年代标志符y 年M 月d 日h 时 在上午或下午 (1~12)H 时 在一天中 (0~23)m 分s 秒S 毫秒E 星期D 一年中的第几天F 一月中第几个星期几w 一年中第几个星期W 一月中第几个星期a 上午 / 下午 标记符k 时 在一天中 (1~24)K 时 在上午或下午 (0~11)z 时区例子1 SimpleDateFormat DATETIME_FORMATER_WITHWEEK  new SimpleDateFormat(            yyyy-MM-dd E HH:mm);    java.util.Date date  new java.util.Date();    System.out.println(DATETIME_FORMATER_WITHWEEK.format(date));        //output: 2015-04-15 星期三 23:59     //当然反过来我也可以使用这个format将output的字符串转化成DateCalendarCalendar中主要需要了解的各种操作域感觉这也是Java在做这个API时的一个败笔灵活有余可控性不足初学者如果乱用域将会产生各种bug。至于每一个域对应的时间分量请自行google。一些常用的filedYEAR:年MONTH月(从0 开始0 表示1月....11表示12月)DAY_OF_MONTH :几号(等同DATE)DAY_OF_WEEK星期几DAY_OF_YEAR年里面的天DATE:几号(等同DAY_OF_MONTH)一个filed通常来说对应了日期时间中的某一个分量在操作这个分类有些操作会向高位进位而有的操作则不会【bug高发区域】。例子2SimpleDateFormat DATETIME_FORMATER_WITHWEEK  new SimpleDateFormat(     yyyy-MM-dd E);    Calendar calendarT  Calendar.getInstance(Locale.CHINA);    System.out.println(DATETIME_FORMATER_WITHWEEK.format(calendarT.getTime()));    calendarT.set(Calendar.MONTH,12);// 月份进位    System.out.println(DATETIME_FORMATER_WITHWEEK.format(calendarT.getTime()));    //output:2015-04-16 星期四2016-01-16 星期六例子3        SimpleDateFormat DATETIME_FORMATER_WITHWEEK  new SimpleDateFormat(     yyyy-MM-dd E);    Calendar calendarT  Calendar.getInstance(Locale.CHINA);    System.out.println(原始    :DATETIME_FORMATER_WITHWEEK.format(calendarT.getTime()));    calendarT.set(Calendar.DAY_OF_MONTH,1);// 当月第一天    System.out.println(当月第一天:DATETIME_FORMATER_WITHWEEK.format(calendarT.getTime()));    //roll不会进位    calendarT.roll(Calendar.DATE,-1);    System.out.println(roll -1:DATETIME_FORMATER_WITHWEEK.format(calendarT.getTime()));    calendarT.set(Calendar.DAY_OF_MONTH,1);// 当月第一天    calendarT.add(Calendar.DATE,-1);    //add产生进位    System.out.println(add -1:DATETIME_FORMATER_WITHWEEK.format(calendarT.getTime()));        //output:原始    :2015-04-16 星期四当月第一天:2015-04-01 星期三roll -1:2015-04-30 星期四add -1:2015-03-31 星期二最后还是需要说明一点获取当前时间指的是当前本地时间对应的UTC时间和时区没有关系有点绕没关系看代码例子4Calendar calendar1  Calendar.getInstance(Locale.CHINA);    Calendar calendar2  Calendar.getInstance(Locale.GERMAN);    System.out.println(calendar1.getTimeInMillis());    System.out.println(calendar2.getTimeInMillis());        //output:    14291151501171429115150117日期处理开源库joda-time
http://www.huolong8.cn/news/33018/

相关文章:

  • 好的平面设计灵感网站广西壮族自治区市场监督管理局官网
  • 做网站是用c 吗网站建设备案审核要多久
  • 建设部网站阮建昌公示网络营销方案500字
  • 建设化妆品网站的成本比较好的网站设计
  • 番禺区大石做网站黑icp 网站建设
  • 贵州省兴义市建设局网站小公司有必要买财务软件吗
  • 好网站推荐一下典型网站建设
  • 东莞做微网站建设价格网站制作的设计思路
  • 网站建设基本流程备案wordpress发邮件慢
  • seo对各类网站的作用手机导航下载2022新版
  • 做环保工程常用的网站抖音免费推广网站
  • 石家庄网站开发培训小程序接广告可以赚多少钱
  • 360度全景网站的公司微信公众平台可以导入wordpress
  • 深圳 三人 网站建设上孩做网站
  • 怎样在门户网站做网络推广政策变了2022二建有必要考吗
  • 做网站的你选题的缘由是什么建湖人才网今曰招
  • 手机网站开发+手机模拟器冠县 网站建设
  • 高要区住房和城乡建设局网站网站建设套餐报价
  • 2020电商网站排行榜怎么注册自己网站吗
  • 外贸网站做推广网站设置密码
  • 四川网站建设贴吧wordpress登录下载文件
  • 网站建设综合wordpress 扫描
  • 湛江怎样建设自己的网站东莞网络营销推广公司
  • 淄博网站seo公司黄山旅游攻略2022
  • 商会网站模板网站设计发展趋势
  • 网站建设免费域名刚做的网站怎么知道有没有潜在的
  • 做网站为什么要备案做网贷网站多少钱
  • 建网站公司下载快手网站经营模式
  • 网站建设服务怎么样福州思企互联网站建设公司
  • 邯郸哪里可以学建网站陈村网站开发