diff --git a/js/src/type.ts b/js/src/type.ts index 2bb330c164bc5..ae3aefa025999 100644 --- a/js/src/type.ts +++ b/js/src/type.ts @@ -406,7 +406,7 @@ type Timestamps = Type.Timestamp | Type.TimestampSecond | Type.TimestampMillisec /** @ignore */ interface Timestamp_ extends DataType { TArray: Int32Array; - TValue: number | Date; + TValue: number; ArrayType: TypedArrayConstructor; } diff --git a/js/src/visitor/get.ts b/js/src/visitor/get.ts index 425accd19382e..3ab3bcb68c386 100644 --- a/js/src/visitor/get.ts +++ b/js/src/visitor/get.ts @@ -180,11 +180,7 @@ const getDate = (data: Data, index: number): T['TValue'] => /** @ignore */ const getTimestampSecond = ({ values }: Data, index: number): T['TValue'] => 1000 * epochMillisecondsLongToMs(values, index * 2); /** @ignore */ -const getTimestampMillisecond = ({ values, type }: Data, index: number): T['TValue'] => { - const value = epochMillisecondsLongToMs(values, index * 2); - // js dates are timezone agnostic so we only convert to date if there is no timezome - return type.timezone ? value : epochMillisecondsToDate(value); -}; +const getTimestampMillisecond = ({ values }: Data, index: number): T['TValue'] => epochMillisecondsLongToMs(values, index * 2); /** @ignore */ const getTimestampMicrosecond = ({ values }: Data, index: number): T['TValue'] => epochMicrosecondsLongToMs(values, index * 2); /** @ignore */ diff --git a/js/src/visitor/set.ts b/js/src/visitor/set.ts index f828b4d3685c0..5dc42283c36f0 100644 --- a/js/src/visitor/set.ts +++ b/js/src/visitor/set.ts @@ -178,13 +178,13 @@ export const setDate = (data: Data, index: number, value: T[ }; /** @ignore */ -export const setTimestampSecond = ({ values }: Data, index: number, value: T['TValue']): void => setEpochMsToMillisecondsLong(values, index * 2, (value as number) / 1000); +export const setTimestampSecond = ({ values }: Data, index: number, value: T['TValue']): void => setEpochMsToMillisecondsLong(values, index * 2, value / 1000); /** @ignore */ -export const setTimestampMillisecond = ({ values }: Data, index: number, value: T['TValue']): void => setEpochMsToMillisecondsLong(values, index * 2, value instanceof Date ? value.getTime() : value); +export const setTimestampMillisecond = ({ values }: Data, index: number, value: T['TValue']): void => setEpochMsToMillisecondsLong(values, index * 2, value); /** @ignore */ -export const setTimestampMicrosecond = ({ values }: Data, index: number, value: T['TValue']): void => setEpochMsToMicrosecondsLong(values, index * 2, value as number); +export const setTimestampMicrosecond = ({ values }: Data, index: number, value: T['TValue']): void => setEpochMsToMicrosecondsLong(values, index * 2, value); /** @ignore */ -export const setTimestampNanosecond = ({ values }: Data, index: number, value: T['TValue']): void => setEpochMsToNanosecondsLong(values, index * 2, value as number); +export const setTimestampNanosecond = ({ values }: Data, index: number, value: T['TValue']): void => setEpochMsToNanosecondsLong(values, index * 2, value); /* istanbul ignore next */ /** @ignore */ export const setTimestamp = (data: Data, index: number, value: T['TValue']): void => { diff --git a/js/test/generate-test-data.ts b/js/test/generate-test-data.ts index 559283680ad67..8e6e47de836eb 100644 --- a/js/test/generate-test-data.ts +++ b/js/test/generate-test-data.ts @@ -415,10 +415,7 @@ function generateTimestamp(this: TestDataVectorGenerator, t type.unit === TimeUnit.MICROSECOND ? 1000000 : type.unit === TimeUnit.MILLISECOND ? 1000 : 1; const data = createTimestamp(length, nullBitmap, multiple, values); - return { - values: () => type.unit === TimeUnit.MILLISECOND && !type.timezone ? values.map((x) => x == null ? null : new Date(x)) : values, - vector: new Vector([makeData({ type, length, nullCount, nullBitmap, data })]) - }; + return { values: () => values, vector: new Vector([makeData({ type, length, nullCount, nullBitmap, data })]) }; } function generateTime(this: TestDataVectorGenerator, type: T, length = 100, nullCount = Math.trunc(length * 0.2)): GeneratedVector { diff --git a/js/test/unit/vector/date-vector-tests.ts b/js/test/unit/vector/date-vector-tests.ts index 61d50d48715b7..e5cd49933eac5 100644 --- a/js/test/unit/vector/date-vector-tests.ts +++ b/js/test/unit/vector/date-vector-tests.ts @@ -17,12 +17,12 @@ import { DateDay, DateMillisecond, TimestampMillisecond, RecordBatchReader, Table, vectorFromArray } from 'apache-arrow'; -describe(`TimeStampVector`, () => { +describe(`TimestampVector`, () => { test(`Dates are stored in TimestampMillisecond`, () => { const date = new Date('2023-02-01T12:34:56Z'); const vec = vectorFromArray([date]); expect(vec.type).toBeInstanceOf(TimestampMillisecond); - expect(vec.get(0)).toBeInstanceOf(Date); + expect(vec.get(0)).toBe(date.valueOf()); }); });