Commit graph

223 commits

Author SHA1 Message Date
Oscar Nihlgård
02d6dd723d Timeinterval optimization (#7608)
* TimeInterval optimization

* Fix typo in `$`(Duration)
2018-04-16 00:01:34 +02:00
Andreas Rumpf
116e984a6b remove deprecated timeToTimeInfo; fixes #3678 2018-04-14 00:59:32 +02:00
Oscar Nihlgård
f6df2d9956 Sub second time resolution (#6978)
* Add deprecation warnings to recently deprecated procs

* Fix bad usage of the times module

* Introduce sub second resolution

* Fix usage of C's time()

* Switch to nanosecond resolution

* Make Time & Duration opaque again and fix some errors

* Change back to TimeInterval for shorthands

* Fix JS test

* Fix build error for windows

* Undeprecate epochTime

* Documentation and minor changes

* Lots of bugfixes and doc comments

* Attempt to make travis & appveyor green

* Fix edge cases for dealing with the local timezone

* Workaround JS backend overflow/underflow bug

* Use better workaround for not knowing the size of time_t

* Use all available timezones for tests

* Fix indentation

* Add procs for accessing the fractional part of a duration

* Order time units from smallest to largest since it makes more sense

* Include months and years in `TimeUnit`

* Review fix
2018-04-13 07:36:30 +02:00
Yuriy Glukhov
bc724a0a81 Fixed compilation of times.nim with mingw 4.9.2 C++ 32bit 2018-04-03 19:05:36 +03:00
data-man
759023e157 Comparing datetimes 2018-04-01 00:41:38 +03:00
Dominik Picheta
ceebfb3e89 Remove repetitive index checks in b30b920751. 2018-02-19 20:00:14 +00:00
data-man
b30b920751 Fix date parsing for a bad inputs 2018-02-19 16:57:17 +03:00
Dominik Picheta
24cae4addb
Merge pull request #7033 from GULPF/allow-timezone-closures
Allow timezone procs to be closures
2018-01-10 17:45:29 +00:00
Oscar Nihlgård
c098ee3c7a Remove nimcall pragma from tz procs 2018-01-05 11:16:58 +01:00
Oscar Nihlgård
c344fb311d Allow timezone procs to be closures 2018-01-05 10:07:46 +01:00
GULPF
30d182e5d6 Unexport epochday procs (#7024) 2018-01-03 23:54:36 +01:00
GULPF
74fb3e6e6e
Improve deprecation comments in times module 2017-12-31 14:40:46 +01:00
Daniil Yarancev
a521f98392 Add warnings about deprecation to times module (#7001)
* Add warnings about deprecation to times module

I've added warnings about some procedures being deprecated.
Also I can't find what is the replacement for `getTimezone` proc, please help with that

* Update times.nim

* Update times.nim
2017-12-30 15:15:15 +00:00
Araq
77d56aaff6 cleanup times.nim 2017-12-21 10:11:45 +01:00
GULPF
a879973081 Better times module (#6552)
* First work on better timezones

* Update tests to new api.
Removed tests for checking that `isDst` was included when formatting, since `isDst` no longer affects utc offset (the entire utc offset is stored directly in `utcOffset` instead).

* Deprecate getLocaltime & getGmTime
* Add `now()` as a shorthand for GetTIme().inZone(Local)
* Add FedericoCeratto's timezone tests (#6548)
* Run more tests in all timezones

* Make month enum start at 1 instead of 0
* Deprecate getDayOfWeekJulian
* Fix issues with gc safety
* Rename TimeInfo => DateTime
* Fixes #6465
* Improve isLeapYear
* FIx handling negative adjTime

* Cleanup:
- deprecated toSeconds and fromSeconds, added fromUnix and toUnix instead (that returns int64 instead of float)
- added missing doc comments
- removed some unnecessary JS specific implementations

* Fix misstake in JS `-` for Time

* Update usage of TimeEffect
* Removed unecessary use of `difftime`
* JS fix for local tz
* Fix subtraction of months
* Fix `days` field in `toTimeInterval`
* Style and docs
* Fix getDayOfYear for real this time...
* Fix handling of adding/subtracting time across dst transitions
* Fix some bad usage of the times module in the stdlib
* Revert to use proper time resoultion for seeding in random.nim
* Move deprecated procs to bottom of file
* Always use `epochTime` in `randomize`
* Remove TimeInterval normalization
* Fixes #6905

* Fix getDayOfWeek for year < 1
* Export toEpochDay/fromEpochDay and change year/month/monthday order
* Add asserts for checking that the monthday is valid
* Fix some remaining ambiguous references to `Time`
* Fix ambiguous reference to Time
2017-12-18 23:11:28 +01:00
Andreas Rumpf
762ade1177 'ord' does not produce a range type anymore 2017-11-02 18:23:21 +01:00
Oscar Nihlgård
f2ba3d174c Fix countLeapYears 2017-10-10 15:47:12 +02:00
Charlie Barto
d55e02ddf1 fixes to allow the usage of clang on windows with the msvc abi and ms headers (#6442) 2017-10-09 17:26:53 +02:00
GULPF
0b7b116f04 Call tzset to initialize timezone (#6466) 2017-10-03 07:31:06 +02:00
Federico Ceratto
ca0de9a54d Improve TimeInterval docs #6135 (#6341) 2017-09-07 08:29:20 +02:00
Federico Ceratto
bad52ca29a Improve docs around subtracting times (#6152)
The output can be surprising - better provide examples.
2017-09-03 01:01:06 +02:00
Federico Ceratto
a038c62bef Add TimeInterval reversing docstring 2017-07-29 11:42:03 +01:00
Araq
5334fd4533 fixes #6021! 2017-06-27 15:34:42 +02:00
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