我有一个.csv文件。 第二列是日期。
日期可能格式不同。
如何检查以确定它们是否采用相同的格式,或者我是否可以使用某种方法将所有日期更改为1种特定格式?
答案 0 :(得分:1)
例如,16/10/2013 == 04/09 / 2014是真的吗? - 运纬郝
如果您处理的日期看起来像01/01/20015
那么这是美国的方式,将月份放在第一位,而世界其他地方则将第一天放在第一位
03/07/2015
可能是7月的三分之一或三月的七分之一,但12/13/2015
必须是2015年12月的第13期
您需要咨询您的数据提供商以解决此问题
答案 1 :(得分:-3)
如果您可以安装DateTime模块,这应该可行。您可以添加任何所需的格式。 您可能遇到的问题很少。你需要特殊的逻辑来处理mmddyy和yymmdd。
#!/usr/bin/perl
use strict;
use warnings;
use DateTime;
my $date1 = '2016-01-07';
my $date2 = '02/07/2016';
$date1 = parseDate($date1)->mdy('/');
$date2 = parseDate($date2)->mdy('/');
print "Date 1: $date1\n";
print "Date 2: $date2\n";
sub parseDate {
my ($date) = @_;
my ($year, $month, $day);
if($date =~ /^(\d{4})-(\d{2})-(\d{2})$/) { #yyyy-mm-dd
($year, $month, $day) = ($1, $2, $3);
}
elsif($date =~ /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/) { #mm/dd/yyyy
($year, $month, $day) = ($3, $1, $2);
}
elsif($date =~ /^(\d{4})(\d{2})(\d{2})$/) { #yyyymmdd
($year, $month, $day) = ($1, $2, $3);
}
else {
die "Date format is unknown: $date";
}
$date = DateTime->new(
year => $year,
month => $month,
day => $day,
);
return $date;
}