KoD 1.7.7
- fix di routine ai canali/server\n\n
This commit is contained in:
@@ -32,8 +32,7 @@ def UTC(year, month, date, hours, minutes, seconds, ms): # todo complete this
|
||||
mili = args[6].to_number() if l > 6 else Js(0)
|
||||
if not y.is_nan() and 0 <= y.value <= 99:
|
||||
y = y + Js(1900)
|
||||
t = TimeClip(MakeDate(MakeDay(y, m, dt), MakeTime(h, mi, sec, mili)))
|
||||
return PyJsDate(t, prototype=DatePrototype)
|
||||
return TimeClip(MakeDate(MakeDay(y, m, dt), MakeTime(h, mi, sec, mili)))
|
||||
|
||||
|
||||
@Js
|
||||
@@ -76,11 +75,12 @@ class PyJsDate(PyJs):
|
||||
|
||||
# todo fix this problematic datetime part
|
||||
def to_local_dt(self):
|
||||
return datetime.datetime.utcfromtimestamp(
|
||||
UTCToLocal(self.value) // 1000)
|
||||
return datetime.datetime(1970, 1, 1) + datetime.timedelta(
|
||||
seconds=UTCToLocal(self.value) // 1000)
|
||||
|
||||
def to_utc_dt(self):
|
||||
return datetime.datetime.utcfromtimestamp(self.value // 1000)
|
||||
return datetime.datetime(1970, 1, 1) + datetime.timedelta(
|
||||
seconds=self.value // 1000)
|
||||
|
||||
def local_strftime(self, pattern):
|
||||
if self.value is NaN:
|
||||
@@ -332,7 +332,7 @@ class DateProto:
|
||||
check_date(this)
|
||||
t = UTCToLocal(this.value)
|
||||
tim = MakeTime(
|
||||
HourFromTime(t), MinFromTime(t), SecFromTime(t), ms.to_int())
|
||||
Js(HourFromTime(t)), Js(MinFromTime(t)), Js(SecFromTime(t)), ms)
|
||||
u = TimeClip(LocalToUTC(MakeDate(Day(t), tim)))
|
||||
this.value = u
|
||||
return u
|
||||
@@ -341,12 +341,164 @@ class DateProto:
|
||||
check_date(this)
|
||||
t = this.value
|
||||
tim = MakeTime(
|
||||
HourFromTime(t), MinFromTime(t), SecFromTime(t), ms.to_int())
|
||||
Js(HourFromTime(t)), Js(MinFromTime(t)), Js(SecFromTime(t)), ms)
|
||||
u = TimeClip(MakeDate(Day(t), tim))
|
||||
this.value = u
|
||||
return u
|
||||
|
||||
# todo Complete all setters!
|
||||
def setSeconds(sec, ms=None):
|
||||
check_date(this)
|
||||
t = UTCToLocal(this.value)
|
||||
s = sec.to_number()
|
||||
if not ms is None: milli = Js(msFromTime(t))
|
||||
else: milli = ms.to_number()
|
||||
date = MakeDate(
|
||||
Day(t), MakeTime(Js(HourFromTime(t)), Js(MinFromTime(t)), s, milli))
|
||||
u = TimeClip(LocalToUTC(date))
|
||||
this.value = u
|
||||
return u
|
||||
|
||||
def setUTCSeconds(sec, ms=None):
|
||||
check_date(this)
|
||||
t = this.value
|
||||
s = sec.to_number()
|
||||
if not ms is None: milli = Js(msFromTime(t))
|
||||
else: milli = ms.to_number()
|
||||
date = MakeDate(
|
||||
Day(t), MakeTime(Js(HourFromTime(t)), Js(MinFromTime(t)), s, milli))
|
||||
v = TimeClip(date)
|
||||
this.value = v
|
||||
return v
|
||||
|
||||
def setMinutes(min, sec=None, ms=None):
|
||||
check_date(this)
|
||||
t = UTCToLocal(this.value)
|
||||
m = min.to_number()
|
||||
if not sec is None: s = Js(SecFromTime(t))
|
||||
else: s = sec.to_number()
|
||||
if not ms is None: milli = Js(msFromTime(t))
|
||||
else: milli = ms.to_number()
|
||||
date = MakeDate(Day(t), MakeTime(Js(HourFromTime(t)), m, s, milli))
|
||||
u = TimeClip(LocalToUTC(date))
|
||||
this.value = u
|
||||
return u
|
||||
|
||||
def setUTCMinutes(min, sec=None, ms=None):
|
||||
check_date(this)
|
||||
t = this.value
|
||||
m = min.to_number()
|
||||
if not sec is None: s = Js(SecFromTime(t))
|
||||
else: s = sec.to_number()
|
||||
if not ms is None: milli = Js(msFromTime(t))
|
||||
else: milli = ms.to_number()
|
||||
date = MakeDate(Day(t), MakeTime(Js(HourFromTime(t)), m, s, milli))
|
||||
v = TimeClip(date)
|
||||
this.value = v
|
||||
return v
|
||||
|
||||
def setHours(hour, min=None, sec=None, ms=None):
|
||||
check_date(this)
|
||||
t = UTCToLocal(this.value)
|
||||
h = hour.to_number()
|
||||
if not min is None: m = Js(MinFromTime(t))
|
||||
else: m = min.to_number()
|
||||
if not sec is None: s = Js(SecFromTime(t))
|
||||
else: s = sec.to_number()
|
||||
if not ms is None: milli = Js(msFromTime(t))
|
||||
else: milli = ms.to_number()
|
||||
date = MakeDate(Day(t), MakeTime(h, m, s, milli))
|
||||
u = TimeClip(LocalToUTC(date))
|
||||
this.value = u
|
||||
return u
|
||||
|
||||
def setUTCHours(hour, min=None, sec=None, ms=None):
|
||||
check_date(this)
|
||||
t = this.value
|
||||
h = hour.to_number()
|
||||
if not min is None: m = Js(MinFromTime(t))
|
||||
else: m = min.to_number()
|
||||
if not sec is None: s = Js(SecFromTime(t))
|
||||
else: s = sec.to_number()
|
||||
if not ms is None: milli = Js(msFromTime(t))
|
||||
else: milli = ms.to_number()
|
||||
date = MakeDate(Day(t), MakeTime(h, m, s, milli))
|
||||
v = TimeClip(date)
|
||||
this.value = v
|
||||
return v
|
||||
|
||||
def setDate(date):
|
||||
check_date(this)
|
||||
t = UTCToLocal(this.value)
|
||||
dt = date.to_number()
|
||||
newDate = MakeDate(
|
||||
MakeDay(Js(YearFromTime(t)), Js(MonthFromTime(t)), dt), TimeWithinDay(t))
|
||||
u = TimeClip(LocalToUTC(newDate))
|
||||
this.value = u
|
||||
return u
|
||||
|
||||
def setUTCDate(date):
|
||||
check_date(this)
|
||||
t = this.value
|
||||
dt = date.to_number()
|
||||
newDate = MakeDate(
|
||||
MakeDay(Js(YearFromTime(t)), Js(MonthFromTime(t)), dt), TimeWithinDay(t))
|
||||
v = TimeClip(newDate)
|
||||
this.value = v
|
||||
return v
|
||||
|
||||
def setMonth(month, date=None):
|
||||
check_date(this)
|
||||
t = UTCToLocal(this.value)
|
||||
m = month.to_number()
|
||||
if not date is None: dt = Js(DateFromTime(t))
|
||||
else: dt = date.to_number()
|
||||
newDate = MakeDate(
|
||||
MakeDay(Js(YearFromTime(t)), m, dt), TimeWithinDay(t))
|
||||
u = TimeClip(LocalToUTC(newDate))
|
||||
this.value = u
|
||||
return u
|
||||
|
||||
def setUTCMonth(month, date=None):
|
||||
check_date(this)
|
||||
t = this.value
|
||||
m = month.to_number()
|
||||
if not date is None: dt = Js(DateFromTime(t))
|
||||
else: dt = date.to_number()
|
||||
newDate = MakeDate(
|
||||
MakeDay(Js(YearFromTime(t)), m, dt), TimeWithinDay(t))
|
||||
v = TimeClip(newDate)
|
||||
this.value = v
|
||||
return v
|
||||
|
||||
def setFullYear(year, month=None, date=None):
|
||||
check_date(this)
|
||||
if not this.value is NaN: t = UTCToLocal(this.value)
|
||||
else: t = 0
|
||||
y = year.to_number()
|
||||
if not month is None: m = Js(MonthFromTime(t))
|
||||
else: m = month.to_number()
|
||||
if not date is None: dt = Js(DateFromTime(t))
|
||||
else: dt = date.to_number()
|
||||
newDate = MakeDate(
|
||||
MakeDay(y, m, dt), TimeWithinDay(t))
|
||||
u = TimeClip(LocalToUTC(newDate))
|
||||
this.value = u
|
||||
return u
|
||||
|
||||
def setUTCFullYear(year, month=None, date=None):
|
||||
check_date(this)
|
||||
if not this.value is NaN: t = UTCToLocal(this.value)
|
||||
else: t = 0
|
||||
y = year.to_number()
|
||||
if not month is None: m = Js(MonthFromTime(t))
|
||||
else: m = month.to_number()
|
||||
if not date is None: dt = Js(DateFromTime(t))
|
||||
else: dt = date.to_number()
|
||||
newDate = MakeDate(
|
||||
MakeDay(y, m, dt), TimeWithinDay(t))
|
||||
v = TimeClip(newDate)
|
||||
this.value = v
|
||||
return v
|
||||
|
||||
def toUTCString():
|
||||
check_date(this)
|
||||
|
||||
@@ -16,7 +16,8 @@ CONSTANTS = {
|
||||
'SQRT1_2': 0.7071067811865476,
|
||||
'SQRT2': 1.4142135623730951
|
||||
}
|
||||
|
||||
def is_infinity(x):
|
||||
return x - 1e10 == x
|
||||
|
||||
class MathFunctions:
|
||||
def abs(this, args):
|
||||
@@ -65,22 +66,22 @@ class MathFunctions:
|
||||
def ceil(this, args):
|
||||
x = get_arg(args, 0)
|
||||
a = to_number(x)
|
||||
if a != a: # it must be a nan
|
||||
return NaN
|
||||
if not is_finite(x):
|
||||
return x
|
||||
return float(math.ceil(a))
|
||||
|
||||
def floor(this, args):
|
||||
x = get_arg(args, 0)
|
||||
a = to_number(x)
|
||||
if a != a: # it must be a nan
|
||||
return NaN
|
||||
if not is_finite(x):
|
||||
return x
|
||||
return float(math.floor(a))
|
||||
|
||||
def round(this, args):
|
||||
x = get_arg(args, 0)
|
||||
a = to_number(x)
|
||||
if a != a: # it must be a nan
|
||||
return NaN
|
||||
if not is_finite(x):
|
||||
return x
|
||||
return float(round(a))
|
||||
|
||||
def sin(this, args):
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from ..conversions import *
|
||||
from ..func_utils import *
|
||||
|
||||
from six import unichr
|
||||
|
||||
def fromCharCode(this, args):
|
||||
res = u''
|
||||
|
||||
@@ -38,8 +38,8 @@ def DaylightSavingTA(t):
|
||||
return t
|
||||
try:
|
||||
return int(
|
||||
LOCAL_ZONE.dst(datetime.datetime.utcfromtimestamp(
|
||||
t // 1000)).seconds) * 1000
|
||||
LOCAL_ZONE.dst(datetime.datetime(1970, 1, 1) + datetime.timedelta(
|
||||
seconds=t // 1000)).seconds) * 1000
|
||||
except:
|
||||
warnings.warn(
|
||||
'Invalid datetime date, assumed DST time, may be inaccurate...',
|
||||
|
||||
Reference in New Issue
Block a user