From c685f4dc12eba720bf9ede3c6572fdac82f6a4e2 Mon Sep 17 00:00:00 2001 From: Jesse Gumm Date: Fri, 6 Nov 2015 17:26:26 -0600 Subject: [PATCH] Add range docs to readme --- README.markdown | 70 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/README.markdown b/README.markdown index 5fcad6f..07560be 100644 --- a/README.markdown +++ b/README.markdown @@ -621,8 +621,6 @@ ok ## Date Arithmetic -(not fully tested yet, but will have full tests for 0.4.0) - The current implementation of qdate's date arithmetic returns Unixtimes. There are 8 main functions for date arithmetic: @@ -654,6 +652,74 @@ There are 7 other arithmetic functions that take a single argument, and these do + `add_months(Months)` + `add_years(Years)` +## Date and Time Ranges + +qdate provides a number of `range` functions that give applicable dates/times +within a start and end time. For example, "All days from 2015-01-01 to today", +"every 3rd month from 2000-01-01 to 2009-12-31", or "every 15 minutes from +midnight to 11:59pm on 2015-04-15". + +The functions are as follows: + + + `range_seconds(Interval, Start, End)` + + `range_minutes(Interval, Start, End)` + + `range_hours(Interval, Start, End)` + + `range_days(Interval, Start, End)` + + `range_weeks(Interval, Start, End)` + + `range_months(Interval, Start, End)` + + `range_years(Interval, Start, End)` + +Where `Interval` is the number of seconds/days/years/etc. + +So for example: + +```erlang +%% Get every 15th minute from "2015-04-15 12:00am to 2015-04-15 11:59am" +> qdate:range_minutes(15, "2015-04-15 12:00am", "2015-04-15 11:59am"). +[1429056000,1429056900,1429057800,1429058700,1429059600, + 1429060500,1429061400,1429062300,1429063200,1429064100, + 1429065000,1429065900,1429066800,1429067700,1429068600, + 1429069500,1429070400,1429071300,1429072200,1429073100, + 1429074000,1429074900,1429075800,1429076700,1429077600, + 1429078500,1429079400,1429080300,1429081200|...] + +%% Get every day of April, 2014 +> qdate:range_days(1, "2014-04-01", "2014-04-30"). +[1396310400,1396396800,1396483200,1396569600,1396656000, + 1396742400,1396828800,1396915200,1397001600,1397088000, + 1397174400,1397260800,1397347200,1397433600,1397520000, + 1397606400,1397692800,1397779200,1397865600,1397952000, + 1398038400,1398124800,1398211200,1398297600,1398384000, + 1398470400,1398556800,1398643200,1398729600|...] +``` + +Note, that the return value (just like qdate's arithmetic functions) is a list +of integers. These integers are unix timestamps and can be easily formatted +with qdate: + +```erlang +> Mins = qdate:range_minutes(15, "2015-04-15 12:00am", "2015-04-15 11:59am"), +> [qdate:to_string("Y-m-d h:ia", M) || M <- Mins]. +["2015-04-15 00:00am","2015-04-15 00:15am", + "2015-04-15 00:30am","2015-04-15 00:45am", + "2015-04-15 01:00am","2015-04-15 01:15am", + "2015-04-15 01:30am","2015-04-15 01:45am", + "2015-04-15 02:00am","2015-04-15 02:15am", + "2015-04-15 02:30am","2015-04-15 02:45am", + "2015-04-15 03:00am","2015-04-15 03:15am", + "2015-04-15 03:30am","2015-04-15 03:45am", + "2015-04-15 04:00am","2015-04-15 04:15am", + "2015-04-15 04:30am","2015-04-15 04:45am", + "2015-04-15 05:00am","2015-04-15 05:15am", + "2015-04-15 05:30am","2015-04-15 05:45am", + "2015-04-15 06:00am","2015-04-15 06:15am", + "2015-04-15 06:30am","2015-04-15 06:45am", + [...]|...] +``` + +Also note that the range functions are *inclusive*. + + ## Thanks A few shoutouts to [Dale Harvey](http://github.com/daleharvey) and the