Добавить дату к имени файла перед копированием в php - PullRequest
3 голосов
/ 22 июня 2011

Я пытаюсь добавить дату к имени файла перед копированием в PHP.

$fileS = "file.csv";
$date = date('m-d-Y H:i:s A e');
$fileD = "file$date.csv";

Я даже пытался

$fileD = "file"."date('m-d-Y H:i:s A e')".".csv";

Затем я копирую файлы

$Confirm = copy($fileS, $fileD);

Я знаю, что должен проверить, существует ли файл и т. Д. И т. Д., Но для простоты задайте вопрос, который я использую:).

Я предполагаю, что это как-то связано с функцией копирования, котораяне читает связанные строки.Я могу ошибаться.

Любая помощь с этим очень ценится.

РЕДАКТИРОВАТЬ: Кажется, что проблема с двоеточием, а не $ fileD.Любой тип объединения будет работать.(Спасибо Гринише).

Этот работает, но есть идеи, как заставить его работать с двоеточием.Кажется странным иметь время с '-' вместо ':'.

$date = date('m-d-Y H-i-s A e');

Неважно.Двоеточия не допускаются в соглашении об именах файлов в Windows.Упустили из виду эту часть.Спасибо, Майкл.

Я сейчас создаю это в Windows, но когда оно перейдет в производство, оно будет в UNIX.Так будет ли работать там двоеточие, если я его поменяю?Любое предложение будет полезно в будущем.Спасибо за вашу помощь.

Ответы [ 6 ]

12 голосов
/ 22 июня 2011

Попробуйте использовать формат даты без двоеточий. Запрещается использовать двоеточия в именах файлов Windows и, возможно, в других типах файловых систем.

// Try, for example
$fileD = "file".date('m-d-Y-His A e').".csv";
2 голосов
/ 22 июня 2011

Знаете, я всегда осторожен с тем, чтобы ставить пробелы в именах файлов, называя это возвратом к 80-м и 90-м годам.Что произойдет, если вы просто попробуете:

var_dump(preg_replace('-\W-','_',date('m-d-Y H:i:s A e')));
2 голосов
/ 22 июня 2011

Насколько я вижу, ваша проблема из-за идентификатора:

e Timezone identifier (added in PHP 5.1.0) Examples: UTC, GMT, Atlantic/Azores

Но имя файла не может быть с "/" внутри. Попробуйте использовать другой формат даты

1 голос
/ 22 июня 2011

Когда вы объединяете оператор (например, функцию даты), он не должен быть заключен в кавычки.Итак, ваш второй пример должен работать так:

$fileD = "file".date('m-d-Y H:i:s A e').".csv";
1 голос
/ 22 июня 2011

Вы можете сделать: $fileD = "file".$date.".csv";

Или: $fileD = "file{$date}.csv";

0 голосов
/ 19 февраля 2017

Попробуйте эту служебную функцию:

public static function appendDateTimeToFileName($fileName) {
    $appended = date('_Y_m_d_H_i_s');
    $dotCount = substr_count($fileName, '.');
    if (!$dotCount) {
        return $fileName . $appended;
    }
    $extension = pathinfo($fileName, PATHINFO_EXTENSION);
    $fileName = pathinfo($fileName, PATHINFO_FILENAME);
    return $fileName . $appended . '.' . $extension;
}

Пример:

sample.jpg  -> sample_2017_02_19_01_09_10.jpg
sample      -> sample_2017_02_19_01_09_44
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...