Oct-18-2019, 11:21 PM
Hello,
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
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
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, datetime.date) and isinstance (dt2, datetime.date)): 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 self .day = 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) self ._set_months(months) # 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 = operator.gt increment = 1 else : compare = operator.lt increment = - 1 while compare(dt1, dtm): months + = increment self ._set_months(months) 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 |