Попытка создать строку, которая включает значение времени / даты, используя Ruby - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь создать строковое значение, которое в конечном итоге буду искать как имя файла. Формат следующий: «FILE_NAME_NEEDED_PP_YYYYMMDD.TXT», где отметка даты будет соответствовать фактической дате.

require 'date'
require 'time'

myDate = time.strftime('%Y%m%d')
staticName = "FILE_NAME_NEEDED_PP_"
staticExt = ".TXT"
fileName = 'staticName' + "#{myDate}" + 'staticExt'
puts fileName

Однако, когда я запускаю вышеуказанное, я получаю «<main>': undefined local variable or method время» для основного: Object ( NameError)"

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Проблема

В опубликованном вами коде есть ряд ошибок, в том числе:

  1. Неправильный вызов метода Time # strftime .

    Вам нужно вызвать #strftime для действительного объекта Time, Date или DateTime, например Time.now .

  2. Ненужные операторы require.

    Время автоматически доступно как часть ядра Ruby.

  3. Использование фиксированных строк, а не переменных для формирования новой строки.

    Строки в одинарных кавычках не являются переменными. Вы просто добавляете строки, когда вызываете:

     'staticName' + Time.now.strftime("%Y%m%d") + 'staticExt'
     #=> "staticName20200710staticExt"
    

Решение

Вот некоторый исправленный код, который работает, используя Kernel # sprintf для читаемость:

date        = Time.now.strftime "%Y%m%d"
static_name = "FILE_NAME_NEEDED_PP_"
static_ext  = ".TXT"
filename    = sprintf "%s%d%s", static_name, date, static_ext

filename
#=> "FILE_NAME_NEEDED_PP_20200710.TXT"
0 голосов
/ 10 июля 2020

Вы забыли объявить переменную time. Еще одна вещь, которую вы неправильно добавляете staticExt. Используйте приведенный ниже код

require 'date'
require 'time'

time = Time.now

myDate = time.strftime('%Y%m%d')
staticName = "FILE_NAME_NEEDED_PP_"
staticExt = ".TXT"
fileName = 'staticName' + "#{myDate}" + "#{staticExt}"
puts fileName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...