#!/usr/bin/env python3
#
# changing the date code: add 1 day + 12 hours
#
# for this conversion, read sequentially, no index file
#
# set sequential = 0 for first search
# set sequential > 0 subsequent searches
import pywgrib2_s
from datetime import datetime, timedelta
# date = 'YYYYMMDDHHMMSS'
# time = time variable as used by module datetime
def to_time(date):
# 'YYYYMMDDHHMMSS' -> time
return datetime.strptime(date,"%Y%m%d%H%M%S")
def to_date(time):
# time -> 'YYYYMMDDHHMMSS'
return time.strftime("%Y%m%d%H%M%S")
in_file='a.grb'
out_file='a_newdate.grb'
# for the first read, sequential = 0, for following reads, sequential > 0
sequential=0
while pywgrib2_s.inq(in_file, sequential=sequential, Matched=True, grib='@mem:0') == 1:
meta=pywgrib2_s.matched[0]
# get date code
i=meta.find(":D=")
date=meta[i+3:i+3+14]
# add 1 day + 12 hours to date code
time = to_time(date)
time=time+timedelta(days=1,hours=12)
date_new = to_date(time)
s = pywgrib2_s.write(out_file,'@mem:0',1,time0=date_new)
print(s," date: ",date,' ->', date_new)
sequential = sequential + 1
print("converted ",sequential, " fields")