javascript neo4j-driver 如何将日期时间转换为字符串

问题描述 投票:0回答:4

我目前遇到错误

'字符串不能表示值:{year: { low: 2020, high: 0 },month: { low: 7, high: 0 }, day: { low: 1, high: 0 }, hour: { low: 7 , 高: 0 }, 分钟: { 低: 35, 高: 0 }, 秒: { 低: 45, 高: 0 }, 纳秒: { 低: 914000000, 高: 0 }, timeZoneOffsetSeconds: { 低: 0, 高: 0 }, timeZoneId: null }'

这是由我的属性之一存储为

datetime()
引起的。将其转换为字符串的方法是什么?

我正在使用 npm 的 neo4j 驱动程序

javascript neo4j cypher
4个回答
5
投票

更新2024-10-01

版本:neo4j-5.0

Neo4j 现在在返回的 Date 对象中有

toStandardDate
方法。

用法示例:

const { records } = neo4jDriver.executeQuery(`MATCH (n {id: 1}) RETURN n`)
console.log(records[0].get('n').properties.dateTimeProperty.toStandardDate())

应输出:

2020-07-01T07:35:45.914Z

这应该有效 - 它解决了我在接受的答案中评论的两个问题。也许 op 已经解决了这个问题,但希望这对其他人有帮助。

import { DateTime } from 'neo4j-driver';

/**
 * Convert neo4j date objects into a parsed javascript date object
 * @param dateString - the neo4j date object
 * @returns Date
 */
const parseDate = (neo4jDateTime: DateTime): Date => {
  const { year, month, day, hour, minute, second, nanosecond } = neo4jDateTime;

  const date = new Date(
    year.toInt(),
    month.toInt() - 1, // neo4j dates start at 1, js dates start at 0
    day.toInt(),
    hour.toInt(),
    minute.toInt(),
    second.toInt(),
    nanosecond.toInt() / 1000000 // js dates use milliseconds
  );

  return date;
};

console.log 输出来比较日期:

DateTime {
   year: Integer { low: 2021, high: 0 },
   month: Integer { low: 9, high: 0 },
   day: Integer { low: 6, high: 0 },
   hour: Integer { low: 15, high: 0 },
   minute: Integer { low: 41, high: 0 },
   second: Integer { low: 30, high: 0 },
   nanosecond: Integer { low: 184000000, high: 0 },
   timeZoneOffsetSeconds: Integer { low: 0, high: 0 },
   timeZoneId: null
 }
 2021-09-06T15:41:30.184Z

0
投票

查看 neo4j.types.DateTime。

const datetime= new Date()
const dateToNeo = neo4j.types.DateTime.fromStandardDate(datetime);

0
投票

尝试简单的新日期 JavaScript 函数。

我的实体有

createdAt
日期。所以尝试一下...

enter image description here

我得到这个作为对 MATCH 查询的响应。

enter image description here

然后我可以使用新的 Date() 函数来获取 Javascript Date 对象(它也有一个默认的 toString() 方法!)。

console.log(new Date(entity.birthdate))

console.log(new Date(entity.createdAt))

对我来说,我得到以下结果作为 Javascript Date 对象,您可以根据需要进行操作。

2023-07-21T16:04:21.074Z


-1
投票

由于 DateTime 返回一堆 neo4 int 风格的东西,例如

DateTime {
  year: Integer { low: 2020, high: 0 },
  month: Integer { low: 7, high: 0 },
  day: Integer { low: 1, high: 0 },
  hour: Integer { low: 8, high: 0 },
  minute: Integer { low: 48, high: 0 },
  second: Integer { low: 18, high: 0 },
  nanosecond: Integer { low: 833000000, high: 0 },
  timeZoneOffsetSeconds: Integer { low: 0, high: 0 },
  timeZoneId: null
}

我正在使用 .toString() 转换字段

export function convertDateToString (
    date)
    : string {
        const date_values = [];
        for (const key in date) {
            const cursor = date[key];
            if (cursor) {
                date_values.push(cursor.toString());
            }
        }
        const the_date = new Date(...date_values as [number, number, number, number, number, number]);
        return the_date.toUTCString();
}
© www.soinside.com 2019 - 2024. All rights reserved.