Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 Converting python to c#
I am new to python and having a hard time to understand parts of the code from dateutil.relativedelta. Can someone please help me to translate the code below to c#? Thanks in advance

def __init__(self, dt1=None, dt2=None,
                 years=0, months=0, days=0, leapdays=0, weeks=0,
                 hours=0, minutes=0, seconds=0, microseconds=0,
                 year=None, month=None, day=None, weekday=None,
                 yearday=None, nlyearday=None,
                 hour=None, minute=None, second=None, microsecond=None):

        if dt1 and dt2:
            # datetime is a subclass of date. So both must be date
            if not (isinstance(dt1, and
                raise TypeError("relativedelta only diffs datetime/date")

            # We allow two dates, or two datetimes, so we coerce them to be
            # of the same type
            if (isinstance(dt1, datetime.datetime) !=
                    isinstance(dt2, datetime.datetime)):
                if not isinstance(dt1, datetime.datetime):
                    dt1 = datetime.datetime.fromordinal(dt1.toordinal())
                elif not isinstance(dt2, datetime.datetime):
                    dt2 = datetime.datetime.fromordinal(dt2.toordinal())

            self.years = 0
            self.months = 0
            self.days = 0
            self.leapdays = 0
            self.hours = 0
            self.minutes = 0
            self.seconds = 0
            self.microseconds = 0
            self.year = None
            self.month = None
   = None
            self.weekday = None
            self.hour = None
            self.minute = None
            self.second = None
            self.microsecond = None
            self._has_time = 0

            # Get year / month delta between the two
            months = (dt1.year - dt2.year) * 12 + (dt1.month - dt2.month)

            # Remove the year/month delta so the timedelta is just well-defined
            # time units (seconds, days and microseconds)
            dtm = self.__radd__(dt2)

            # If we've overshot our target, make an adjustment
            if dt1 < dt2:
                compare =
                increment = 1
                compare =
                increment = -1

            while compare(dt1, dtm):
                months += increment
                dtm = self.__radd__(dt2)

            # Get the timedelta between the "months-adjusted" date and dt1
            delta = dt1 - dtm
            self.seconds = delta.seconds + delta.days * 86400
            self.microseconds = delta.microseconds
You may find better luck in a C# forum.

That said, when people come here asking for help converting their other language code to Python, they usually don't get much help because they post a big block of code with no effort from them. I recommend you try this on your own, and ask as specific a question as possible when you get stuck.
Larz60+ likes this post
Feel like you're not getting the answers you want? Checkout the help/rules for things like what to include/not include in a post, how to use code tags, how to ask smart questions, and more.

Pro-tip - there's an inverse correlation between the number of lines of code posted and my enthusiasm for helping with a question :)

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  help with converting C# function to Python korenron 17 2,490 May-19-2019, 10:26 AM
Last Post: Gribouillis
  Converting R code to python mcva 2 1,664 Mar-09-2019, 04:01 PM
Last Post: mcva
  converting from c# to python peper 1 723 Jun-12-2018, 05:19 PM
Last Post: micseydel
  Converting Pseudocode to Python ncp511 1 2,217 Jan-16-2018, 04:34 PM
Last Post: Windspar
  Need help converting some code from python 2.7 to 3.5 Blue Dog 3 2,180 Oct-18-2016, 12:30 AM
Last Post: sparkz_alot

Forum Jump:

Users browsing this thread: 1 Guest(s)