繁体   English   中英

将日期时间与字符串中的相同日期时间进行比较

[英]Comparing Datetime to same datetime in string

在Rails控制台中,

> time1 = DateTime.now
 => Thu, 23 Feb 2017 10:50:27 +0630  
> time2 = "#{time1}"
 => "2017-02-23T10:50:27+06:30" 
> time1 == time2
 => false 

这是对的。 因为

> time1.class
 => DateTime
> time2.class
 => String 

所以我将time2更改为datetime。

> time2.to_datetime.class
 => DateTime 
> time2.to_datetime
 => Thu, 23 Feb 2017 10:50:27 +0630 

并尝试再次比较这些时间。

> time1 == time2.to_datetime
 => false 
> time1
 => Thu, 23 Feb 2017 10:50:27 +0630 
> time2.to_datetime
 => Thu, 23 Feb 2017 10:50:27 +0630 

结果为假。

时间1是DateTime对象,而时间2是字符串类型的对象在这里,你必须转换time2成datetime

要比较两个日期,您将必须使用以下方式将两个日期都转换为整数

 »  time1.to_i == time2.to_datetime.to_i                                                                                                                                                         
 => true

最好比较两个字符串或两个整数,而不是两个DateTime对象,因为DateTime保存诸如时区等信息。

time1.to_s == time2
#=> true

错误,因为我们有不同的会议记录:

> time1 == time2.to_datetime
 => false 
> time1
 => Thu, 23 Feb 2017 10:37:56 +0630 
> time2.to_datetime
 => Thu, 23 Feb 2017 10:26:18 +0630

10:37:56 +0630大于10:26:18 +0630

因此,如果您比较为:

time1 > time2.to_datetime
=> true
> time1.to_i == time2.to_datetime.to_i
 => true 

这可行。 但不是一个很好的解决方案。

你可以试试:

DateTime.strptime(time1, "%Y-%m-%dT%H:%M") == DateTime.strptime(time2.to_datetime, "%Y-%m-%dT%H:%M")
=>> true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM