Commit graph

250 commits

Author SHA1 Message Date
Euan T
3a2ab81df1 Fix #6010 documenting subtracting time interval (#6012) 2017-06-22 13:52:13 +02:00
Daniil Yarancev
3b0dba7a75 Update times.nim 2017-06-18 01:28:48 +03:00
Jacek Sieka
e512358bc9 Linux abi take 3 (#5692)
* avoid generating object fields for imported types
* fix some abi/type issues for linux_amd64
2017-04-12 22:57:10 +02:00
Konstantin Molchanov
a9044117e9 Stdlib: Times: Use JS's "new Date" to convert TimeInfo to Time.
To use JS's Date creation from string, I moved the TimeInfo formatting code above the toTime proc declaration. Also, I changed the argument type for newDate from string to cstring for it to work.
2017-03-29 16:40:52 +04:00
Konstantin Molchanov
2351d5d314 Merge branch 'calculate_yearday_in_timeinfo_js' into fix_time_offset_in_times_js 2017-03-27 21:38:19 +04:00
Konstantin Molchanov
bef86f55ce Times: JS: Add yearday to TimeInfo.
Add yearday calculation to getLocalTime and getGMTime, so that yearday is not 0 for TimeInfo instances under JS backend.

Yearday 0 has no sense and contradicts the behaviour under C backend, where yearday is an int from 1 to 365, i.e. cannot be 0 even theoretically.
2017-03-27 00:14:48 +04:00
Konstantin Molchanov
3ebffb2a00 Times: JS: Remove implicit UTC convesion.
The conversion would produce incorrect timestamp.
2017-03-26 23:50:02 +04:00
Konstantin Molchanov
80ffae62fb JS: Times: Add timezone prop to TimeInfo. (#5581) 2017-03-25 09:26:34 +01:00
Simon Krauter
45c251cb1d fixes 4804
toTime(): Use the Windows-specific part for every OS, because it gives correct results on Linux too. The removed code for Linux gives wrong results.
2017-01-06 23:29:20 +01:00
AdrianV
3a4353bc40 bcc uses _timezone like vcc 2016-12-28 17:30:23 +01:00
Araq
78d68f0882 Merge branch 'devel' into sighashes 2016-12-06 16:49:22 +01:00
Dmitry Polienko
dc8ee72eb6 Revert @endragor's fix for Windows
_mkgmtime is not supported by mingw because of the older msvcrt
versions. Fortunately, mktime implementation in Windows is just broken
enough to make the initial implementation work...

As far as I can tell, this works with both *nix-like platforms
and Win, and fixes #4690
2016-12-06 14:53:48 +07:00
Ruslan Mustakov
50a1267b7d Fix TimeInfo to Time conversion. Fixes #5065. 2016-11-30 20:28:17 +07:00
Araq
82448b1304 times.nim: remove code duplication 2016-11-29 10:36:42 +01:00
Felix Krause
0ffd14e169 Updated times.parse() documentation 2016-11-14 19:18:23 +01:00
Felix Krause
434c27343e Parse 'Z' as valid timezone if offset is expected 2016-11-14 18:46:35 +01:00
Felix Krause
0587a57807 Assume local DST iff no timezone is given 2016-11-14 18:36:03 +01:00
Felix Krause
aa08c32c2b Improved -; fixed tests
* added prefix `-` operator for TimeInterval
 * improved `-` for both TimeInterval and TimeInfo
 * Fixed a DST test
2016-11-14 18:28:55 +01:00
Felix Krause
544a2cfe1a Fixed daylight saving time
* When formatting timezone, substract 1 hour from timezone when isDST
 * Do not depend DST in current timezone when parsing arbitrary date
   because formatted timestamps are never in DST.
 * On the way, removed an unnecessary line in parsing code which could
   cause bugs.
 * Added DST tests
2016-11-14 18:28:55 +01:00
Felix Krause
91a0674961 Fixed timezone rendering, added test 2016-11-10 19:03:46 +01:00
Felix Krause
9b2aaf0df6 Fixed timezone sign error
* This was introduced in recent "cosmetic" fix. Not so cosmetic
   after all…
2016-11-08 20:57:53 +01:00
Andreas Rumpf
4c79583a95 Merge pull request #5002 from goldenreign/time-compare-nosideeffect
Add 'noSideEffect' pragma for Time type's operators. Fixes #4981
2016-11-07 16:52:34 +01:00
Felix Krause
6e604e2f9f More cosmetic changes
* Don't use factor var, it's overly complicated
 * Removed proc that's now unused
 * Better documented timezone field
2016-11-07 11:08:31 +01:00
goldenreign
63c450abdc Fix - operator for Time type for JS target 2016-11-07 14:26:27 +07:00
goldenreign
554105ff7c Add 'noSideEffect' pragma for Time type's operators 2016-11-07 12:14:28 +07:00
Felix Krause
f500b9f47b Cosmetic fixes
* Improved comments
 * Improved spacing
 * Use consts instead of magic numbers
2016-11-03 18:45:52 +01:00
Felix Krause
9d5de8021b Use ISO 8601 format for times.$. Fixed tests.
* `$` now uses format() with explicit time zone.
 * Fixed errors in rendering "z", "zz" and "zzz"
 * Updated tests
2016-11-01 21:14:52 +01:00
Felix Krause
170745eb39 Removed tzname because it's broken
* No mapping between TimeInfo.tzname and TimeInfo.timezone
 * tzname of time.h is not well-defined, may have almost arbitrary
   length, and localization may differ
 * Code used hardcoded "UTC" string
2016-11-01 20:26:50 +01:00
Felix Krause
c1f0b7643c Fixed timezone offset parsing 2016-11-01 19:33:43 +01:00
Felix Krause
96234f36ca Made times.nim compile again to JS 2016-11-01 18:42:22 +01:00
Felix Krause
2ec6fe56ad Fixed timezone handling
* mktime always interprets its input as local time even on systems where
   gmtoff is present, so using it is utterly useless for anything but getting
   the local timezone. Removed all other usage of gmtoff to avoid confusion.
 * Properly handle timezone offset in toTime()
 * Properly handle timezone offset in `$` because asctime also interprets its
   input as local time
 * Also tried to fix the JavaScript implementation
2016-11-01 17:22:50 +01:00
Araq
47304372ca change TimeImpl for MingW 2016-11-01 14:11:46 +01:00
Jonathan Bernard
b7232bd425 Fix #4922, bug in times.parse, mishandling DST. 2016-10-21 17:06:36 -05:00
Jonathan Bernard
68d3486f5a Bugfix for times.initInterval (issue #4889)
`initInterval` had logic to calculate and carry overflowed fields (65 seconds
turns into 5 seconds and carries 1 minute). However, we were not including that
carried value when we recalculate the carry over for the next period of time.So
if you had, for example, 3600 seconds, we carried 60 minutes into the minutes
calculation, but when we calculated how much we should carry into the hours
value we only considered what the user originally supplied for the minutes
field, and forgot to include those 60 carried minute.

So, for example, with the previous implementation this was true:

`seconds(60 * 60 * 24) == seconds(0)`

Or, as failing tests:

```nimrod
import times

assert seconds(60 * 60 * 24) != seconds(0)
assert seconds(60 * 60 * 24) == days(1)
```
2016-10-12 15:44:21 -05:00
Felix Krause
68680a9880 Calculate correct yearday in times.parse 2016-08-19 12:34:10 +02:00
Andreas Rumpf
60b187513e stdlib and compiler don't use .immediate anymore 2016-07-29 23:51:01 +02:00
Andreas Rumpf
0834cd63d9 prepare Nim codebase for upcoming parser changes 2016-07-15 12:56:03 +02:00
Dominik Picheta
8182414a6f Fix times.+ and - for TimeInfo and TimeInterval. 2016-06-18 16:11:57 +01:00
Yuriy Glukhov
7389662809 Time has now reference semantics on js 2016-06-01 18:46:58 +03:00
cheatfate
2264bd6097 Adding OpenBSD to defines 2016-05-30 14:39:29 +03:00
cheatfate
b7f2058833 Resolve #3059
Make getTimezone() to work properly on FreeBSD and NetBSD.
2016-05-30 13:18:31 +03:00
Dominik Picheta
9b6fda144a Some documentation fixes in times module. 2016-04-06 10:45:39 +01:00
coffeepots
d9ed61fa62 Deprecate timeToTimeInfo, add str->time procs
* depreciate timeToTimeInfo, add str->time procs

initTime allows creating times from strings. initTimeFromStr offers a default format string compatible with $Time.
timeToTimeInterval changed to work properly.

* Spell {.deprecated.} correctly

* deprecated timeToTimeInfo, removed initTime procs

Is it even worth depreciating timeToTimeInfo rather than just removing it, considering it's just wrong and we have getLocalTime and getGMTime that actually work? Also, if I'm renaming timeToTimeInfo -> toTimeInfo etc, isn't the deprecated tag kind of redundant?

* Updated names for toTime and toTimeInterval procs

* Added type to toTime template

This should allow compilation of os.nim now that toTime is defined in times.nim.

* Updated toTime template to use {.gensym.}

Local templates default to 'bind' semantics, not 'gensym'. This was causing a failure to 'see' the local toTime template.
2016-04-06 10:36:17 +01:00
Federico Ceratto
d9cb85c2d8 Spellcheck 2016-02-29 11:25:51 +00:00
Anatoly Galiulin
5cfb653094 Fixed issue 3905 with getTimezone in js 2016-02-26 16:17:38 +06:00
Dominik Picheta
fffdae32c7 Fixed TimeInterval bug. 2016-01-08 11:54:34 +00:00
Dominik Picheta
09b159b816 Fixed ttime test. Improved docs in times module. 2016-01-08 11:46:11 +00:00
JamesP
8af8f7673b add timeinterval helping functions as per issue #3609
add tests to ttime.nim for timeinterval add/subtract functionality

Changed assert to doAssert in ttime.nim
Added extra tests to ttime.nim
Removal of singular help procs for working with TimeIntervals
Added TimeIin proc toSeconds(a: TimeInfo, interval: TimeInterval) where subtracting a year gave wrong results
Add overflow of units on initInterval eg, 65 seconds is 5 seconds and 1 minute
2015-12-08 10:16:42 +10:00
JamesP
def25504e8 Add comment at end of file on where to find further tests 2015-12-01 23:05:37 +10:00
JamesP
f62e8558c8 Removal of tests from times module, that have been moved to ttime.nim test file 2015-12-01 18:08:52 +10:00