Python
datetime
stringOperation
#migrated

Python > AAA_20170228_030000_BBB.png に N時間を足して返す実装 > re.findall() | datetime.datetime.strptime | datetime.timedelta() | .strftime() | .join() | timedelta(hour=9.5) | re.match(r'(.*_)(\d{8}_\d{6})(_.*)', filename).group

動作環境
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 coreutils > date > 20170228_23000という文字列(UTC)に9.5時間を追加してdateで識別する > echo "20170228_230000" | sed 's/_/+/g' | sed 's/0000/hours+570minutes/g' | xargs date -d

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

正規表現はまだ慣れていないので、間違いがあるかもしれません。