Добавить дату до имени файла перед копированием в php

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

$fileS = "file.csv"; $date = date('mdY H:i:s A e'); $fileD = "file$date.csv"; 

Я даже попробовал

 $fileD = "file"."date('mdY H:i:s A e')".".csv"; 

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

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

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

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

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

EDIT: Двоеточие, кажется, проблема не $ fileD. Любой тип конкатенации будет работать. (Спасибо Greenisha).

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

 $date = date('mdY His A e'); 

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

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

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

 // Try, for example $fileD = "file".date('mdY-His A e').".csv"; 

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

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

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

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

 var_dump(preg_replace('-\W-','_',date('mdY H:i:s A e'))); 

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

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

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

 $fileD = "file".date('mdY H:i:s A e').".csv"; 

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

 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