使用perl脚本比较日期(字符串格式)的正确方法

时间:2018-09-26 09:37:05

标签: perl datetime compare

我是perl脚本的新手。你能帮忙比较两个日期吗? 我有

my $dt1 = "20171026";
my $dt2 = "20180101";

我正在使用下面的代码段比较日期,但是我不确定这是否是正确的方法

use strict; use warnings;

my $dt1 = "20171026";
my $dt2 = "20180101";
if ($dt1 > $dt2){
    print "Hi";
}
else {
print "hello";
}

如果我可以格式化一个字符串,例如$ dt1到日期时间格式并进行比较,有人可以建议我吗?

3 个答案:

答案 0 :(得分:4)

如果使用YYYYMMDD(或%Y%m%d)格式,则可以将日期比较为数字或字符串。这意味着两者

@Override 
    protected void onPostExecute(Boolean internet) { 
        mConsumer.accept(internet);
        if (internet == true) {
                    Toast.makeText(YourActivity.this, "You are connected to internet", Toast.LENGTH_LONG).show();
                } else { 
                    Toast.makeText(YourActivity.this, "Connection Failed", Toast.LENGTH_LONG).show();
                }
    }

$dt1 > $dt2

正常工作。我更喜欢使用字符串比较($dt1 gt $dt2 ),因为我们不使用日期作为数字(我们不向其添加数字等),而是将其用作字符串(例如,可以用{{1}提取年份) }。同样,如果使用分隔符,例如2018/09/25。

答案 1 :(得分:2)

您的比较还可以。

由于您的日期实际上只是数字,并且采用YMD格式,因此可以进行数字比较。日期的组成部分按重要性排序,这在这里很重要。

  • 年度第一:2017始终在2018之前
  • 第二个月:十月(10)晚于一月(01),但前导零很重要
  • 日期:同一件事,05将在29之前

可以比较

  • 2017010120170102之前
  • 2018010120171231之后

因为它们都是数字。

对于这种格式,使用日期模块和解析字符串绝对没有必要或没有好处。它不会使阅读更容易,也不会更快。这只会增加代码的复杂性。

答案 2 :(得分:0)

您可以按照说明将字符串与日期格式进行比较,但这就是您所能做的。

正如我认为的问题一样,当然还有一些用于日期时间工作的库。

最全面的是DateTime,它的功能极为完善

import urllib.request
import demjson
url = ('https://myurl')
content = urllib.request.urlopen(url).read()

现在,您可以使用这些日期来做各种事情,请参阅文档。

如果您不需要那么多的工作并且希望使用更轻便的模块,则可以使用Time::Piece

<script type="text/javascript">
							/* <![CDATA[ */
															function getEmbed(width, height) {
									if (width && height) {
										return '<iframe width="' + width + '" height="' + height + '" src="https://www.ptrex.com/embed/33247" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe>';
									}
									return '<iframe width="768" height="432" src="https://www.ptrex.com/embed/33247" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe>';
								}
							
							var flashvars = {
																	video_id: '33247', 																	license_code: '$535555517668914', 																	rnd: '1537972655', 																	video_url: 'https://www.ptrex.com/get_file/4/996a9088fdf801992d24457cd51469f3f7aaaee6a0/33000/33247/33247.mp4/', 																	postfix: '.mp4', 																	video_url_text: '480p', 																	video_alt_url: 'https://www.ptrex.com/get_file/4/774833c428771edee2cf401ef2264e746a06f9f370/33000/33247/33247_720p.mp4/', 																	video_alt_url_text: '720p HD', 																	video_alt_url_hd: '1', 																	timeline_screens_url: '//di-iu49il1z.leasewebultracdn.com/contents/videos_screenshots/33000/33247/timelines/timeline_mp4/200x116/{time}.jpg', 																	timeline_screens_interval: '10', 																	preview_url: '//di-iu49il1z.leasewebultracdn.com/contents/videos_screenshots/33000/33247/preview.mp4.jpg', 																	skin: 'youtube.css', 																	bt: '1', 																	volume: '1', 																	hide_controlbar: '1', 																	hide_style: 'fade', 																	related_src: 'https://www.ptrex.com/related_videos_html/33247/', 																	adv_pre_vast: 'https://pt.ptawe.com/vast/v3?psid=ed_pntrexvb1&utm_source=bf1&utm_medium=network&ms_notrack=1', 																	lrcv: '1556867449254522707330811', 																	adv_pre_replay_after: '2', 																	embed: '1'															};
														var player_obj = kt_player('kt_player', 'https://www.ptrex.com/player/kt_player.swf?v=4.0.2', '100%', '100%', flashvars);
							/* ]]> */
						</script>

对于简单的事情,它也更易于使用。它还具有其他一些便利,但是如果您的需求变得更加复杂,请小心,因为某些模块的接口可能会很棘手。