icu_date выдает сообщение об ошибке, пытаясь проиндексировать числовое значение

Я хочу использовать библиотеку icu_date, но когда я пытаюсь вставить значение, появляется ошибка

icu_date = require("icu-date")
format_date = icu_date.formats.iso8601()
end_time = icu_date.now()
1602586287098 - print value
end_time:set_millis(1602461532000)
error: '[string "return end_time:set_millis(1602461532000)"]:1: attempt to index global ''end_time'' (a number value)'

Может не хватает библиотек?

  • Библиотека libicu-devel-50.2-4.el7_7.x86_64
  • Система: Centos 7

person denisT    schedule 13.10.2020    source источник


Ответы (1)


Кажется, вам нужно использовать icu_date.new() (не now) для создания нового экземпляра. Затем вы можете использовать его так, как хотите:

icu_date = require("icu-date")
format_date = icu_date.formats.iso8601()
end_time = icu_date.new()
end_time:set_millis(1602461532000)
tarantool> end_time:format(format_date)
---
- 2020-10-12T00:12:12.000Z
...

icu_date.now() возвращает текущее время. На самом деле это числовое значение.

tarantool> icu_date = require('icu-date')
---
...

tarantool> icu_date.now()
---
- 1602597687320
...
person Oleg Babin    schedule 13.10.2020
comment
Олег, делаю так, как ты написал, появляется ошибка: .rocks / share / tarantool / icu-date / init.lua: 17: tarantool init.lua: undefined symbol: udat_formatCalendar_50 ' - person denisT; 14.10.2020
comment
Похоже, вы используете слишком старую версию icu-date. Я предлагаю вам обновить libicu и сообщить о проблеме (github.com/tarantool/icu-date/issues), думаю можно поправить совместимость со старыми версиями. - person Oleg Babin; 14.10.2020