[ncl-talk] set_date_time [SEC=UNCLASSIFIED]

Griffith Young griffith.young at bom.gov.au
Thu Oct 5 15:46:29 MDT 2017


Hello Kunal,
                “creating wrong date as the files are of December month, but it is generating January month date also. I don't know why.”

                Your script was fine.  You just needed to subtract 1 from your Julian date.  So you math was wrong…

                For example …2000001… would become “001 days 2000-01-01”, which is 2000-01-02.

                Guido’s (excellent) script could also be simplified to return the whole date at once.

                yyyymmdd=`date -d "${year}-01-01 +${day_of_year} days -1 day" "+%Y%m%d"`

                If you are using bash, I would recommend using $(command) instead of `command` as it is clearer where the boundaries are.  (If that makes sense.  Backticks can lead to strange behaviours that are hard to spot when sharing code.)

                I find this easier to read:
                *             yyyymmdd=$(date -d "${year}-01-01 +${day_of_year} days -1 day" "+%Y%m%d")

                I hope I have answered your “I don't know why” question.

Regards,
                Griff.



From: ncl-talk [mailto:ncl-talk-bounces at ucar.edu] On Behalf Of Guido Cioni
Sent: Friday, 6 October 2017 7:46 AM
To: Marston Johnston
Cc: ncl-talk
Subject: Re: [ncl-talk] set_date_time

I had to do something similar last week. Converting from hdf to netcdf and then merge into a single file with time information. It was modis data. I don't have time to explain the script so I'm copying here hoping that it could help.

for f in *.nc; do
    year=${f:9:4}
    day_of_year=${f:13:3}
    month=`date -d "${year}-01-01 +${day_of_year} days -1 day" "+%m"`
    day=`date -d "${year}-01-01 +${day_of_year} days -1 day" "+%d"`
    echo ${year}-${month}-${day}
    cdo -b F64 setdate,${year}-${month}-${day} ${f} ${f%.nc}_2.nc<http://2.nc>
done


Cheers

Il 5 ott 2017 9:56 PM, "Marston Johnston" <shejo284 at gmail.com<mailto:shejo284 at gmail.com>> ha scritto:
It seems like you choose a fairly complicated way to solve the problem.
May I suggest reading in the MAIACTAOT.h00v02.*.nc files in chronological order and then writing new netcdf files in ncl where you can create a time array with the correct dtg.
It’s fairly quick and easy in ncl.
I’ve had such problems before and found it easiest to with the above method.

Hope this helps,
/M

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Marston S. Ward, PhD
Department of Earth Sciences
University of Gothenburg, Sweden
Email: marston.johnston at gu.se<mailto:marston.johnston at gu.se>
SkypeID: marston.johnston
Phone: +46-31-7864901<tel:+46%2031%20786%2049%2001>
Only the fruitful thing is true!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


From: ncl-talk <ncl-talk-bounces at ucar.edu<mailto:ncl-talk-bounces at ucar.edu>> on behalf of Kunal Bali <kunal.bali9 at gmail.com<mailto:kunal.bali9 at gmail.com>>
Date: Thursday, 5 October 2017 at 20:40
To: "ncl-talk at ucar.edu<mailto:ncl-talk at ucar.edu>" <ncl-talk at ucar.edu<mailto:ncl-talk at ucar.edu>>
Subject: [ncl-talk] set_date_time

Dear NCL users,

I have one question regarding date-time setting from filename. This question is not actually related to NCL, sorry in advance.

I have 4 .nc files named given below. The time is not created in these files during conversion from hdf to netcdf in NCL.

MAIACTAOT.h00v02.20003640715.nc   --> 2000=year, 364=day, 07=hr, 15=min
MAIACTAOT.h00v02.20003650620.nc
MAIACTAOT.h00v02.20003660525.nc
MAIACTAOT.h00v02.20003660700.nc

So, I did try to create the date-time with shell scripting (given below)
but it is creating wrong date as the files are of December month, but it is generating January month date also. I don't know why.

2000-01-01 05:25:00
2000-01-01 07:00:00
2000-12-30 07:15:00
2000-12-31 06:20:00


the shell script, which I am using

#######################################

for n in  MAIACTAOT.h00v02.20*.nc;do
 ls $n > text
export xx=`cut -c18-28 text`
export YYYY=`cut -c18-21 text`
export JJJ=`cut -c22-24 text`
export HH=`cut -c25-26 text`
export MM=`cut -c27-28 text`
mm=`date -d "$JJJ days $YYYY-01-01" +"%m"`
dd=`date -d "$JJJ days $YYYY-01-01" +"%d"`
mydate=${YYYY}-${mm}-${dd},${HH}:${MM}:00
echo $mydate

echo "cdo settaxis,$mydate $n re$n"
cdo settaxis,$mydate $n re$n

done

cdo mergetime reMAI*.nc final.nc<http://final.nc>
exit
#################################


Any suggestion regarding this issue would be very helpful.

Thank You

Kunal Bali






_______________________________________________ ncl-talk mailing list ncl-talk at ucar.edu<mailto:ncl-talk at ucar.edu> List instructions, subscriber options, unsubscribe: http://mailman.ucar.edu/mailman/listinfo/ncl-talk

_______________________________________________
ncl-talk mailing list
ncl-talk at ucar.edu<mailto:ncl-talk at ucar.edu>
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20171005/a7c5d245/attachment.html>


More information about the ncl-talk mailing list