diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-06-26 23:42:28 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-06-26 23:42:28 (GMT) |
commit | 59c58576efd3ceff7add46a359fd99e56a2fb279 (patch) | |
tree | a23982655f3f7959c9c340b429aebc51435e6676 /src/script/api/qscriptengine.cpp | |
parent | d8f757bdb881c3a3d723642734d7d76fae14dce7 (diff) | |
parent | 1a72f98a15ef78004894dc6636b8a5d969d66fde (diff) | |
download | Qt-59c58576efd3ceff7add46a359fd99e56a2fb279.zip Qt-59c58576efd3ceff7add46a359fd99e56a2fb279.tar.gz Qt-59c58576efd3ceff7add46a359fd99e56a2fb279.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1:
Fixed copy-paste error in htmlgenerator.cpp
Corrected filename case for wincrypt.h
Add qDebug() operator for QGLFormat
Fix conversion between JavaScript Date and QDateTime
Avoid memory allocation when converting from Gbk to unicode.
Warn if surface creation fails
Doc: fixing search bug
doc: Added more DITA output to the XML generator
QSemaphore::tryAquire(timeout) -- never times out on an active semaphore
Fix warnings in QSslSocketPrivate::systemCaCertificates()
doc: Added more DITA output to the XML generator
Diffstat (limited to 'src/script/api/qscriptengine.cpp')
-rw-r--r-- | src/script/api/qscriptengine.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index 655026c..7bccffe 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -438,6 +438,53 @@ qsreal ToNumber(const QString &value) #endif +static const qsreal MsPerSecond = 1000.0; + +static inline int MsFromTime(qsreal t) +{ + int r = int(::fmod(t, MsPerSecond)); + return (r >= 0) ? r : r + int(MsPerSecond); +} + +/*! + \internal + Converts a JS date value (milliseconds) to a QDateTime (local time). +*/ +QDateTime MsToDateTime(JSC::ExecState *exec, qsreal t) +{ + if (qIsNaN(t)) + return QDateTime(); + JSC::GregorianDateTime tm; + JSC::msToGregorianDateTime(exec, t, /*output UTC=*/true, tm); + int ms = MsFromTime(t); + QDateTime convertedUTC = QDateTime(QDate(tm.year + 1900, tm.month + 1, tm.monthDay), + QTime(tm.hour, tm.minute, tm.second, ms), Qt::UTC); + return convertedUTC.toLocalTime(); +} + +/*! + \internal + Converts a QDateTime to a JS date value (milliseconds). +*/ +qsreal DateTimeToMs(JSC::ExecState *exec, const QDateTime &dt) +{ + if (!dt.isValid()) + return qSNaN(); + QDateTime utc = dt.toUTC(); + QDate date = utc.date(); + QTime time = utc.time(); + JSC::GregorianDateTime tm; + tm.year = date.year() - 1900; + tm.month = date.month() - 1; + tm.monthDay = date.day(); + tm.weekDay = date.dayOfWeek(); + tm.yearDay = date.dayOfYear(); + tm.hour = time.hour(); + tm.minute = time.minute(); + tm.second = time.second(); + return JSC::gregorianDateTimeToMS(exec, tm, time.msec(), /*inputIsUTC=*/true); +} + void GlobalClientData::mark(JSC::MarkStack& markStack) { engine->mark(markStack); |