動作環境
Xeon E5-2620 v4 (8コア) x 2
32GB RAM
CentOS 6.8 (64bit)
openmpi-1.8.x86_64 とその-devel
mpich.x86_64 3.1-5.el6とその-devel
gcc version 4.4.7 (とgfortran)
NCAR Command Language Version 6.3.0
WRF v3.7.1を使用。
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
Python 3.6.0 on virtualenv
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
GNU dateでファイル名の日時を変換しようとしたが、どうもうまくいかないので断念。
Python実装に切り替えた。
参考
Pythonで文字列からdatetimeオブジェクトを生成する(Python3.3)
情報感謝です。
「12a345a67.8」から正規表現で、「12」と「345a67.8」をキャプチャ取得したい
良い課題の提供感謝です。
上記の変換をお試し実装したら、その実装方法が今回役に立ちました。
(re.findallの使用)
timedelta()は @shiracamus さんに教えていただきました。
(NOTE: そのコメントが検索できないため、リンクを貼ることができません。)
.join()も@@shiracamus さんに教えていただきました。(と思います)
(NOTE: そのコメントが検索できないため、リンクを貼ることができません。)
code v0.1
test_change_timezone_171004.py
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import sys
import re
import datetime as dt
import sys
# on Python 2.6.6
# coding rule: PEP8
# v0.1 Oct. 03, 2017
# - add STR_addhour()
def STR_addhour(asrc, timediff_hour):
# input(asrc): e.g. [XXX_yyyymmdd_hhnnss_XXX.png]
#
wrk = re.findall(r'[^\s_,]+', asrc)
yyyymmdd_hhnnss = wrk[1] + " " + wrk[2]
#print(wrk)
#print(yyyymmdd_hhnnss)
#sys.exit()
adt = dt.datetime.strptime(yyyymmdd_hhnnss, '%Y%m%d %H%M%S')
adt = adt + dt.timedelta(0, timediff_hour * 60 * 60)
res = adt.strftime('%Y%m%d_%H%M%S')
res = '_'.join([wrk[0], res, wrk[3]])
return res
SRCSTR = "AAA_20170228_030000_BBB.png"
for elem in 23, 9.5, 6, 5.0:
dst = STR_addhour(SRCSTR, timediff_hour=elem)
print(dst)
run
AAA_20170301_020000_BBB.png
AAA_20170228_123000_BBB.png
AAA_20170228_090000_BBB.png
AAA_20170228_080000_BBB.png
正規表現はまだ慣れていないので、間違いがあるかもしれません。