Skip to main content
Question

YearWeek calculation


Forum|alt.badge.img

Hello,

What I would like to do is to create a list of all YearWeeks from a given YearWeek till the current YearWeek automatically.

E.g. I would set the beginning to 201743.

Then the output should look like this:

201743

201744

201745

201746

201747

201748

201749

201750

201751

201752

201801

201802

Please note that all weeks should be 2 digits.

Are there sufficient FME transformers to do so or would I need to use Python?

Your help is highly appreciated.

4 replies

erik_jan
Contributor
Forum|alt.badge.img+18
  • Contributor
  • January 10, 2018

I think the transformer you need is the DateTimeCalculator.

You will need to embed that in a custom transformer to create a loop construction and loop until you reach the current week.


erik_jan
Contributor
Forum|alt.badge.img+18
  • Contributor
  • January 10, 2018

I have created a workspace that will list the weeks.

You can download it here: weeklister.fmw


Forum|alt.badge.img
  • January 11, 2018

Or the python way: 

In a Python Creator and expose the attribute 'YearWeeks'

import fmeobjects
from datetime import datetime, timedelta


class FeatureCreator(object):
    def __init__(self):
        pass
    def close(self):
        startDateText = "201742" # put a start date of a week before needed
        today = datetime.now() 
        d = timedelta(weeks=1)
        endDateText = today.strftime("%Y%W")
        Currentdate = datetime.strptime("{}0".format(startDateText),"%Y%W%w")
        # had to add a weekday number to get a datetime value
        CurrentText = "0"
       
        while int(CurrentText) < int(endDateText):
            feature = fmeobjects.FMEFeature()
            Currentdate = Currentdate + d
            CurrentText =  Currentdate.strftime("%Y%W")
            feature.setAttribute("YearWeeks",CurrentText) 
            self.pyoutput(feature)

I don't like putting the week before in (201742) and also having numbers as text but datetime uses string as input and outputs. But it does work


takashi
Evangelist
  • January 12, 2018

Although excellent solutions have been provided already, it might also be a good chance to learn FME Date/Time Functions enhanced in 2017. This workflow is an example including use of some Date/Time functions (FME 2017.1+).


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings