Qt中的日期时间类

两个类。QDate;QTime

其构造函数声明如下:

[cpp]  view plain  copy

  1. QDate()  
  2. QDate(int y, int m, int d)  

要注意的是,该构造函数可以接受两位数字的年份。即0-99.

一个是使用静态成员函数currentDate() ;另一个是使用静态函数fromString() 函数,这两个函数声明如下:

[cpp]  view plain  copy

  1. QDate currentDate()  
  2. QDate fromString(const QString &string, const QString &format)  

其中,format种可以使用的格式如下:

d表示天的数字,范围为 1~31,没有前置的0
dd表示天的数字,有前置的0,范围为01~31
ddd表示星期的简写,即Mon~Sun
dddd表示星期的全写,即Monday~Sunday
M表示月份的数字,没有前置的0,范围为1~12
MM表示月份的数字,有前置的0,范围为01~12
MMM表示月份的简写,范围为Jan~Dec
MMMM表示月份的全写,范围为January~December
yy表示两位数字的年份,即00~99
yyyy表示四位数字的年份,如2017

另外还要注意,QDate里的年月日都有相应的默认值。Year默认值为1900,Month默认值为1,Day默认值为1。比如:

[cpp]  view plain  copy

  1. QDate::fromString("1.30", "M.d");           // 1900 1.30  
  2. QDate::fromString("20000110", "yyyyMMdd");  // 2000 01 10  
  3. QDate::fromString("20000110", "yyyyMd");    // 2000 1 10  

注意,没有0年,若未年份传入0,则被认为是无效的。

与fromString() 相对的,QDate还提供了一个toString() 方法,可以将QDate对象表示的日期按一定格式转化为一个字符串表示。

[cpp]  view plain  copy

  1. QString toString(const QString &format) const  

[cpp]  view plain  copy

  1. QDate date(2017,3,21)  
  2. date.toString("yyyy-MM-dd") //2017-03-21  

注意,toString() 里的format中必须有分隔符,即"yyyyMMdd"是不支持的。 
如果QDate表示的日期是无效的,则返回一个空字符串。 

除了这些创建对象的函数,QDate还为我们提供了很多操作QDate对象的方法,比如判断日期是否有效的isValid(),判断某个年份是否是闰年的isLeapYear()等等。

QTime则表示了自凌晨以来的时分秒及毫秒的时间。

currentTime() 和 fromString() 按一定格式进行构造。但是,QTime表示的时间的精度取决于操作系统本身的精度,并不是所有的系统都能提供1ms级别的精度。

[cpp]  view plain  copy

  1. QTime::QTime()  
  2. QTime::QTime(int h, int m, int s = 0, int ms = 0)  

其中默认构造函数,创建出一个空(null)对象。注意,空时间对象和QTime(0,0,0,0)的区别。一个空时间对象的isNull() 返回true,isValid() 返回false。而QTime(0,0,0,0)是一个有效的时间,它表示零点。

若为构造函数传入了相关参数,则传入的参数必须满足一定要求。即 h必须在0~23之间,m和s必须在0~59之间,ms必须在0~999之间。

[cpp]  view plain  copy

  1. QTime currentTime()  
  2. QTime fromString(const QString &string, const QString &format)  

其中,format中可以使用的格式及含义如下:

h没有前置0的小时数字,即0~23,或者 1~12,如果显示AM/PM的话
hh有前置0的小时数字,即00~23,或者01~12,如果显示AM/PM的话
m没有前置0的分钟数字,0~59
mm有前置0的分钟数字,00~59
s没有前置0的秒数,0~59
ss有前置0的秒数,00~59
z没有前置0的毫秒,0~999
zzz有前置0的毫秒,000~999
AM/PM显示AM/PM
am/pm显示am/pm

[cpp]  view plain  copy

  1. QTime time = QTime::fromString("1.30", "m.s");  
  2. // time is 00:01:30.000  

[cpp]  view plain  copy

  1. QTime time(14,13,9,42)  
  2. time.toString("hh:mm:ss.zzz") //14:13:09.042  

另外,QTime除了和QDate一样,为我们提供了大量方便的创建、设置、获取函数外,还为我们提供了三个用于简单计时的方法。即:

[cpp]  view plain  copy

  1. int elapsed() const  
  2. int restart()  
  3. void start()  

elapsed() 返回自从上次调用start() 或 restart() 之后的毫秒数。注意,如果自从上次调用start() 之后,超过了24小时,那么该数字会回归到0,从新计数。

start() 会将该对象设置为当前时间,然后开始计时。

restart() 将该对象设置为当前时间,然后返回自从上次调用start() 或 restart() 后所经历的毫秒数。该方法可以原子性的完成这两件事,所以非常适合重复计数。即先调用一下start() 开启计时,之后每次计时就调用一下restart() 即可。但和elapsed() 类似,在上次调用start() 或 restart() 24小时后,该计时会回归到0。

提供了QDateTime类。顾名思义,该类是QDate和QTime功能的结合,可以使用一个对象同时表示日期和时间。其使用方式也和上面讲的两个类大同小异,在此就不展开讲解了,有需要的同学,可以自行学习Qt帮助文档即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值