Skip to content

Commit 987809a

Browse files
committed
Add date method to datetime
1 parent f51ceb8 commit 987809a

File tree

5 files changed

+112
-56
lines changed

5 files changed

+112
-56
lines changed

src/danfojs-base/core/datetime.ts

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ export default class TimeSeries implements DateTime {
4646
* Returns the month, in local time.
4747
* @example
4848
* ```
49-
* import { Dataframe } from "danfojs-node"
49+
* import { Series } from "danfojs-node"
5050
* const data = [
5151
* "2019-01-01",
5252
* "2019-02-01",
5353
* "2019-03-01",
5454
* "2019-04-01",
5555
* ]
56-
* const df = new Dataframe(data)
56+
* const df = new Series(data)
5757
* const dfNew = df.dt.month()
5858
* console.log(dfNew.values)
5959
* // [1, 2, 3, 4]
@@ -68,19 +68,19 @@ export default class TimeSeries implements DateTime {
6868
* Returns the day of the week, in local time
6969
* @example
7070
* ```
71-
* import { Dataframe } from "danfojs-node"
71+
* import { Series } from "danfojs-node"
7272
* const data = [
7373
* "2019-01-01",
7474
* "2019-02-01",
7575
* "2019-03-01",
7676
* "2019-04-01",
7777
* ]
78-
* const df = new Dataframe(data)
78+
* const df = new Series(data)
7979
* const dayOfWeek = df.dt.dayOfWeek()
8080
* console.log(dayOfWeek.values)
8181
* ```
8282
*/
83-
dayOfWeek() {
83+
dayOfWeek() {
8484
const newValues = this.$dateObjectArray.map(date => date.getDay())
8585
return new Series(newValues);
8686
}
@@ -89,14 +89,14 @@ export default class TimeSeries implements DateTime {
8989
* Returns the year, in local time
9090
* @example
9191
* ```
92-
* import { Dataframe } from "danfojs-node"
92+
* import { Series } from "danfojs-node"
9393
* const data = [
9494
* "2019-01-01",
9595
* "2019-02-01",
9696
* "2021-03-01",
9797
* "2020-04-01",
9898
* ]
99-
* const df = new Dataframe(data)
99+
* const df = new Series(data)
100100
* const year = df.dt.year()
101101
* console.log(year.values)
102102
* // [2019, 2019, 2021, 2020]
@@ -111,14 +111,14 @@ export default class TimeSeries implements DateTime {
111111
* Returns the name of the month, in local time
112112
* @example
113113
* ```
114-
* import { Dataframe } from "danfojs-node"
114+
* import { Series } from "danfojs-node"
115115
* const data = [
116116
* "2019-01-01",
117117
* "2019-02-01",
118118
* "2021-03-01",
119119
* "2020-04-01",
120120
* ]
121-
* const df = new Dataframe(data)
121+
* const df = new Series(data)
122122
* const monthName = df.dt.monthName().values
123123
* console.log(monthName)
124124
* // ["January", "February", "March", "April"]
@@ -133,14 +133,14 @@ export default class TimeSeries implements DateTime {
133133
* Returns the name of the day, of the week, in local time
134134
* @example
135135
* ```
136-
* import { Dataframe } from "danfojs-node"
136+
* import { Series } from "danfojs-node"
137137
* const data = [
138138
* "2019-01-01",
139139
* "2019-02-01",
140140
* "2021-03-01",
141141
* "2020-04-01",
142142
* ]
143-
* const df = new Dataframe(data)
143+
* const df = new Series(data)
144144
* const dayOfWeekName = df.dt.dayOfWeekName().values
145145
* console.log(dayOfWeekName)
146146
* ```
@@ -154,14 +154,14 @@ export default class TimeSeries implements DateTime {
154154
* Returns the day of the month, in local time
155155
* @example
156156
* ```
157-
* import { Dataframe } from "danfojs-node"
157+
* import { Series } from "danfojs-node"
158158
* const data = [
159159
* "2019-01-01",
160160
* "2019-02-05",
161161
* "2021-03-02",
162162
* "2020-04-01",
163163
* ]
164-
* const df = new Dataframe(data)
164+
* const df = new Series(data)
165165
* const dayOfMonth = df.dt.dayOfMonth().values
166166
* console.log(dayOfMonth)
167167
* // [1, 5, 2, 1]
@@ -176,14 +176,14 @@ export default class TimeSeries implements DateTime {
176176
* Returns the hour of the day, in local time
177177
* @example
178178
* ```
179-
* import { Dataframe } from "danfojs-node"
179+
* import { Series } from "danfojs-node"
180180
* const data = [
181181
* "2019-01-01",
182182
* "2019-02-05",
183183
* "2021-03-02",
184184
* "2020-04-01",
185185
* ]
186-
* const df = new Dataframe(data)
186+
* const df = new Series(data)
187187
* const hour = df.dt.hour().values
188188
* console.log(hour)
189189
* // [0, 0, 0, 0]
@@ -198,14 +198,14 @@ export default class TimeSeries implements DateTime {
198198
* Returns the second of the day, in local time
199199
* @example
200200
* ```
201-
* import { Dataframe } from "danfojs-node"
201+
* import { Series } from "danfojs-node"
202202
* const data = [
203203
* "2019-01-01",
204204
* "2019-02-05",
205205
* "2021-03-02",
206206
* "2020-04-01",
207207
* ]
208-
* const df = new Dataframe(data)
208+
* const df = new Series(data)
209209
* const second = df.dt.second().values
210210
* console.log(second)
211211
* ```
@@ -219,14 +219,14 @@ export default class TimeSeries implements DateTime {
219219
* Returns the minute of the day, in local time
220220
* @example
221221
* ```
222-
* import { Dataframe } from "danfojs-node"
222+
* import { Series } from "danfojs-node"
223223
* const data = [
224224
* "2019-01-01",
225225
* "2019-02-05",
226226
* "2021-03-02",
227227
* "2020-04-01",
228228
* ]
229-
* const df = new Dataframe(data)
229+
* const df = new Series(data)
230230
* const minute = df.dt.minute().values
231231
* console.log(minute)
232232
* ```
@@ -236,6 +236,28 @@ export default class TimeSeries implements DateTime {
236236
return new Series(newValues);
237237
}
238238

239+
/**
240+
* Returns the Date as JavaScript standard Date object
241+
* @example
242+
* ```
243+
* import { Series } from "danfojs-node"
244+
* const data = [
245+
* "2019-01-01",
246+
* "2019-02-05",
247+
* "2021-03-02",
248+
* "2020-04-01",
249+
* ]
250+
*
251+
* const df = new Series(data)
252+
* const date = df.dt.toDate().values
253+
* console.log(date)
254+
* ```
255+
*/
256+
date() {
257+
const newValues = this.$dateObjectArray.map(date => date.toLocaleString())
258+
return new Series(newValues);
259+
}
260+
239261
}
240262

241263
export const toDateTime = (data: Series | ArrayType1D) => {

src/danfojs-base/shared/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ export interface DateTime {
338338
hours(): Series
339339
seconds(): Series
340340
minutes(): Series
341+
date(): Series
341342
}
342343

343344
interface CustomConfig extends Config {

src/danfojs-browser/tests/core/datetime.test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,17 @@ describe("TimeSeries", function () {
8888
assert.deepEqual(dateTime.monthName().values, expectedMonthName);
8989

9090
});
91+
92+
it("Returns date string in standard JS format", function () {
93+
const data = [ "02Sep2019", "03Aug2019", "04July2019" ];
94+
const dateTime = dfd.toDateTime(data);
95+
const expected = [ "2019-09-02", "2019-08-03", "2019-07-04" ];
96+
97+
const data2 = new Series([ "12.30.19", "12.22.19", "11.01.20" ]);
98+
const dateTime2 = dfd.toDateTime(data2);
99+
const expected2 = [ "2019-12-30", "2019-12-22", "2020-11-01" ];
100+
101+
assert.deepEqual(dateTime.date().values, expected);
102+
assert.deepEqual(dateTime2.date().values, expected2);
103+
});
91104
});

src/danfojs-browser/yarn.lock

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -922,35 +922,35 @@
922922
"@nodelib/fs.scandir" "2.1.5"
923923
fastq "^1.6.0"
924924

925-
"@tensorflow/tfjs-backend-cpu@3.11.0":
926-
version "3.11.0"
927-
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-3.11.0.tgz#01d5d68b91faf12bee4854adae56bc956b794f1a"
928-
integrity sha512-ShLkrZ4/rmhZwzGKenMFDfQnaEbyZgWA5F8JRa52Iob/vptlZeuOzjq87CZKmZMUmDswR9A2kjzovT/H1bJdWQ==
925+
"@tensorflow/tfjs-backend-cpu@3.13.0":
926+
version "3.13.0"
927+
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-3.13.0.tgz#2a141256fe0a5de0670c31a9ba6990465708dee4"
928+
integrity sha512-POmzUoAP8HooYYTZ72O1ZYkpVZB0f+8PeAkbTxIG0oahcJccj6a0Vovp1A6xWKfljUoPlJb3jWVC++S603ZL8w==
929929
dependencies:
930930
"@types/seedrandom" "2.4.27"
931931
seedrandom "2.4.3"
932932

933-
"@tensorflow/tfjs-backend-webgl@3.11.0":
934-
version "3.11.0"
935-
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-3.11.0.tgz#fbd7f24c164d17c11d964206b4b075b073b1a3bc"
936-
integrity sha512-rNnc/dZ7LIl9O/Pn9W24I1h8kgpJ+XvG8NrdNSfIoWPCW4fvPSlU7B3yMeZXvRneny+z+T3xRs96nWyU2mZBJw==
933+
"@tensorflow/tfjs-backend-webgl@3.13.0":
934+
version "3.13.0"
935+
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-3.13.0.tgz#f99df51253de21e20dae195991d332195ab30b4b"
936+
integrity sha512-ZuJS11tCoZx2F1Eq7wqiqu8euJpPW/JV0qOKBehlRpV2qQrR+wHMpBT1hhDl4qU4LdgFTtSggKIRg/L8b0ScUQ==
937937
dependencies:
938-
"@tensorflow/tfjs-backend-cpu" "3.11.0"
938+
"@tensorflow/tfjs-backend-cpu" "3.13.0"
939939
"@types/offscreencanvas" "~2019.3.0"
940940
"@types/seedrandom" "2.4.27"
941941
"@types/webgl-ext" "0.0.30"
942942
"@types/webgl2" "0.0.6"
943943
seedrandom "2.4.3"
944944

945-
"@tensorflow/tfjs-converter@3.11.0":
946-
version "3.11.0"
947-
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-converter/-/tfjs-converter-3.11.0.tgz#0842269a83599b52fd167a8a05372018a9a1ca6a"
948-
integrity sha512-rTRIKvBoqL0qdPYpm8UXauZycOiaBHZB2E2v3OoXoHnjvle/Xn/09uZJdrixgGhR+Kahs3Vz27BEEFz6RI5j2w==
945+
"@tensorflow/tfjs-converter@3.13.0":
946+
version "3.13.0"
947+
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-converter/-/tfjs-converter-3.13.0.tgz#3affc86d94c3948b01673a91309a35feb10e5eac"
948+
integrity sha512-H2VpDTv9Ve0HBt7ttzz46DmnsPaiT0B+yJjVH3NebGZbgY9C8boBgJIsdyqfiqEWBS3WxF8h4rh58Hv5XXMgaQ==
949949

950-
"@tensorflow/tfjs-core@3.11.0":
951-
version "3.11.0"
952-
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-3.11.0.tgz#1e3986533faaed922bbfc2fe86da506d0e9e5c79"
953-
integrity sha512-JOp+1+LCd0Xg3hu7fu6iQPWZnN8Hc6ssfP7B+625XH5GYY1/OhVASa7Ahe2mJr9gZovY2lw8FUejLh1jMmBb1Q==
950+
"@tensorflow/tfjs-core@3.13.0":
951+
version "3.13.0"
952+
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-3.13.0.tgz#0cfd707c668250969564991c5c101fb52e51e1aa"
953+
integrity sha512-18qBEVIB/4u2OUK9nA5P1XT3e3LyarElD1UKNSNDpnMLxhLTUVZaCR71eHJcpl9wP2Q0cciaTJCTpJdPv1tNDQ==
954954
dependencies:
955955
"@types/long" "^4.0.1"
956956
"@types/offscreencanvas" "~2019.3.0"
@@ -960,30 +960,30 @@
960960
node-fetch "~2.6.1"
961961
seedrandom "2.4.3"
962962

963-
"@tensorflow/tfjs-data@3.11.0":
964-
version "3.11.0"
965-
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-data/-/tfjs-data-3.11.0.tgz#90dd23a7181f0a744f2882a12c3442b27047383d"
966-
integrity sha512-+cUHUHzjM/zs0JVOwHQm9wP15Y+BZdRcUpMoYWia8r3kaGSyvoz6WqzacEP1PeXgJVnr2gtU3D+bF32th8fZfQ==
963+
"@tensorflow/tfjs-data@3.13.0":
964+
version "3.13.0"
965+
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-data/-/tfjs-data-3.13.0.tgz#55ae81957b7ed51cb0ce4e82edc63c5b3de152e6"
966+
integrity sha512-n50+lxPK0CU72nlFt4dzMCCNV44CQsQU3sSP9zdR2bYHeoFqjjy1ISp+UV5N5DNLj7bsEMs73kGS1EuJ7YcdqQ==
967967
dependencies:
968968
"@types/node-fetch" "^2.1.2"
969969
node-fetch "~2.6.1"
970970

971-
"@tensorflow/tfjs-layers@3.11.0":
972-
version "3.11.0"
973-
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-layers/-/tfjs-layers-3.11.0.tgz#456d8dc3fe93937ced329d5d06310da294d3758c"
974-
integrity sha512-BtLgLucJZHv5te1K3yjT3iZdHXgMJArrLuOb/oRPOtTp4R2ad5N0V2m5RtuZJ3sI5/ah0h72xtmTWNyTv3/5dw==
975-
976-
"@tensorflow/tfjs@^3.11.0":
977-
version "3.11.0"
978-
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs/-/tfjs-3.11.0.tgz#63d5231f41d57ca11b910664632a8e349eba3967"
979-
integrity sha512-TTYrKdkoh1sHnt4vn6MboLbpi1Es4U1Aw+L3PqwadRvXW4+7ySUtc00McrQ+ooK0q3Qhl3N7cvgchgM7nED3Mg==
980-
dependencies:
981-
"@tensorflow/tfjs-backend-cpu" "3.11.0"
982-
"@tensorflow/tfjs-backend-webgl" "3.11.0"
983-
"@tensorflow/tfjs-converter" "3.11.0"
984-
"@tensorflow/tfjs-core" "3.11.0"
985-
"@tensorflow/tfjs-data" "3.11.0"
986-
"@tensorflow/tfjs-layers" "3.11.0"
971+
"@tensorflow/tfjs-layers@3.13.0":
972+
version "3.13.0"
973+
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-layers/-/tfjs-layers-3.13.0.tgz#bc311664eba4f46802ffe3b05bea7df795cae10d"
974+
integrity sha512-kTWJ/+9fbNCMDA9iQjDMYHmWivsiWz8CKNSOZdeCW7tiBwF1EiREBVQXMk1JI11ngQa8f+rYSLs7rkhp3SYl5Q==
975+
976+
"@tensorflow/tfjs@^3.13.0":
977+
version "3.13.0"
978+
resolved "https://registry.yarnpkg.com/@tensorflow/tfjs/-/tfjs-3.13.0.tgz#ea0597e0208d403278e2ccbaa5faa479083a04d3"
979+
integrity sha512-B5HvNH+6hHhQQkn+AG+u4j5sxZBMYdsq4IWXlBZzioJcVygtZhBWXkxp01boSwngjqUBgi8S2DopBE7McAUKqQ==
980+
dependencies:
981+
"@tensorflow/tfjs-backend-cpu" "3.13.0"
982+
"@tensorflow/tfjs-backend-webgl" "3.13.0"
983+
"@tensorflow/tfjs-converter" "3.13.0"
984+
"@tensorflow/tfjs-core" "3.13.0"
985+
"@tensorflow/tfjs-data" "3.13.0"
986+
"@tensorflow/tfjs-layers" "3.13.0"
987987
argparse "^1.0.10"
988988
chalk "^4.1.0"
989989
core-js "3"

src/danfojs-node/test/core/datetime.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,24 @@ describe("TimeSeries", function () {
9191
assert.deepEqual(dateTime.monthName().values, expectedMonthName);
9292

9393
});
94+
95+
it("Returns date string in standard JS format", function () {
96+
const data = ["02Sep2019", "03Aug2019", "04July2019"];
97+
const dateTime = toDateTime(data);
98+
const expected = [
99+
'9/2/2019, 12:00:00 AM',
100+
'8/3/2019, 12:00:00 AM',
101+
'7/4/2019, 12:00:00 AM'
102+
]
103+
104+
const data2 = new Series(["12.30.19", "12.22.19", "11.01.20"]);
105+
const dateTime2 = toDateTime(data2);
106+
const expected2 = [
107+
'12/30/2019, 12:00:00 AM',
108+
'12/22/2019, 12:00:00 AM',
109+
'11/1/2020, 12:00:00 AM'
110+
]
111+
assert.deepEqual(dateTime.date().values, expected);
112+
assert.deepEqual(dateTime2.date().values, expected2);
113+
});
94114
});

0 commit comments

Comments
 (0)