summaryrefslogtreecommitdiffstats
path: root/date.pyx
blob: b7a79ab69160af8cec93b79ebed4a4a6ff675604 (plain)
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
import datetime
from cpython cimport datetime as c_datetime
from date cimport JpmcdsDate, JpmcdsStringToDayCountConv, JpmcdsFormatDayCountConv

c_datetime.import_datetime()

cdef TDate pydate_to_TDate(c_datetime.date d):
    return JpmcdsDate(<long>d.year, <long>d.month, <long>d.day)

cpdef c_datetime.date TDate_to_pydate(TDate d):
    cdef TMonthDayYear date
    if JpmcdsDateToMDY(d, &date) == 0:
        return c_datetime.date_new(date.year, date.month, date.day)

cdef long dcc(str day_count) except -1:
    cdef long r
    dc_bytes = day_count.encode('utf-8')
    cdef char* dc = dc_bytes
    cdef err = JpmcdsStringToDayCountConv(<char*> dc, &r)
    if err == 0:
        return r
    else:
        raise ValueError('{0} is not a valid day count'.format(day_count))

def dcc_tostring(long day_count):
    cdef char* c_string = JpmcdsFormatDayCountConv(day_count)
    s = c_string.decode('utf-8')
    return s