我目前遇到错误
'字符串不能表示值:{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 驱动程序
更新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
查看 neo4j.types.DateTime。
const datetime= new Date()
const dateToNeo = neo4j.types.DateTime.fromStandardDate(datetime);
由于 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();
}