我试图计算从数据库中提取的两个日期之间的日历天数.我认为将日期转换为秒将是一个简单而正确的解决方案.
#!/usr/bin/perl
use warnings;
use strict;
use POSIX qw(strftime);
use Date::Parse;
my $minDate = "2016-03-27";
my $maxDate = "2016-06-15";
print "Format as extracted from db: mindate: $minDate and maxdate: $maxDate\n";
my ($dbYear,$dbMonth,$dbDay) = split ('-', $minDate);
my $datum = "$dbYear$dbMonth$dbDay";
my $minDateSec = str2time($datum);
($dbYear,$dbMonth,$dbDay) = split ('-', $maxDate);
$datum = "$dbYear$dbMonth$dbDay";
my $maxDateSec = str2time($datum);
my $numCalDaysSec = ($maxDateSec-$minDateSec)/86400;
print "Min date in Seconds: $minDateSec\n";
print "Max date in Seconds: $maxDateSec\n";
print "Num days: $numCalDaysSec\n";
Run Code Online (Sandbox Code Playgroud)
最初,我认为这种方法为我提供了可靠的结果:
bash-3.2$ ./testNumDays.pl
As …Run Code Online (Sandbox Code Playgroud) 我是Perl新手,我目前正在学习Perl如何处理多维数组以及如何访问元素.
数据库查询在子例程中执行,并返回数组@stash:
...
while ( $array_ref = $sth->fetchrow_arrayref ) {
push @sub_stash, [ @$array_ref ];
}
$dbh->disconnect;
return ( @sub_stash );
Run Code Online (Sandbox Code Playgroud)
@stash是在main中接收的,并且管理打印数组的内容如下:
@stash = query($var);
### Dump the stash contents!
foreach my $array_ref ( @stash ) {
print "@$array_ref\n";
}
Run Code Online (Sandbox Code Playgroud)
屏幕输出的示例如下:
bash-3.2$ ./test_db_array.pl
2007 123 200728 200753 26
2008 256 200800 200852 53
2009 256 200900 200952 53
2010 258 201001 201052 52
2011 257 201101 201152 52
2012 256 201201 201253 53
2013 255 201300 201352 53
2014 254 …Run Code Online (Sandbox Code Playgroud) 我是一个新手,正在探索模板引擎 Jinja2 来帮助我使用 Python 排版几个 LaTeX 文档。在我最初的探索中,我只是尝试在 Python 中使用以下代码填充表:
latex_jinja_env = jinja2.Environment(
block_start_string = '\BLOCK{',
block_end_string = '}',
variable_start_string = '\VAR{',
variable_end_string = '}',
comment_start_string = '\#{',
comment_end_string = '}',
line_statement_prefix = '%%',
line_comment_prefix = '%#',
trim_blocks = True,
autoescape = False,
loader = jinja2.FileSystemLoader(os.path.abspath('.'))
)
header = ['Num', 'Date', 'Ticker']
data = [[1, 2, 3], [4, 'STR', 'Test'], [5, 6, 'Ticker']]
template = latex_jinja_env.get_template('template.tex')
print(template.render(section1='Test Table', header = header, data = data))
Run Code Online (Sandbox Code Playgroud)
LaTeX 模板的构造如下:
\documentclass[12pt,a4paper]{article}
\begin{document}
\section{\VAR{section1}}
\BLOCK{set colsep …Run Code Online (Sandbox Code Playgroud) 我试图用Python计算两个日期之间的差异,并用天、周、月和年来表示这个时间差。
我的Python代码如下:
purDate = datetime.datetime.strptime(queryPurchaseDate (purID), "%Y-%m-%d %H:%M:%S")
now = datetime.datetime.now()
print 'Purchase date/time : ',purDate.strftime("%Y-%m-%d %H:%M:%S")
print 'Current date/time : ',now.strftime("%Y-%m-%d %H:%M:%S")
hold = now - purDate
print hold
Run Code Online (Sandbox Code Playgroud)
这段代码的结果如下:
bash-3.2$ ./test.py
Purchase date/time : 2017-10-10 00:00:00
Current date/time : 2017-10-14 17:33:39
4 days, 17:33:39.866069
bash-3.2$
Run Code Online (Sandbox Code Playgroud)
我不想将两个日期之间的差异表示为 4 天,17:33:39.866069 我希望将其表示为如下:4.65 天,或 0.66 周,或 0.15 个月,或 0.01 年