我试图在用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的问题。任何类型的连接都可以。 (感谢Greenisha)。
这个有效,但任何想法都可以使它与冒号一起使用。用' - '而不是':'来节省时间似乎很奇怪。
$date = date('m-d-Y H-i-s A e');
没关系。在Windows中的文件命名约定中不允许使用冒号。忽略那一部分。谢谢迈克尔。
我现在在Windows中创建它,但是当它进入生产时它将在UNIX中。如果我改变它,结肠会在那里工作吗?任何建议都将在未来发挥作用。谢谢你的帮助。
答案 0 :(得分:12)
使用不包含冒号的日期格式尝试。 Windows文件名以及其他文件系统类型中不允许使用冒号。
// Try, for example
$fileD = "file".date('m-d-Y-His A e').".csv";
答案 1 :(得分:2)
据我所知,您的问题是由于标识符:
e Timezone identifier (added in PHP 5.1.0) Examples: UTC, GMT, Atlantic/Azores
但是文件名不能与“/”里面。尝试使用其他日期格式
答案 2 :(得分:2)
你知道,我总是担心在文件名中放置空格,把它称为80年代和90年代的回归。如果您尝试,会发生什么:
var_dump(preg_replace('-\W-','_',date('m-d-Y H:i:s A e')));
答案 3 :(得分:1)
你可以这样做:
$fileD = "file".$date.".csv";
或者:
$fileD = "file{$date}.csv";
答案 4 :(得分:1)
当您连接一个语句(例如日期函数)时,它不应该被引号括起来。所以你的第二个例子应该像这样编写:
$fileD = "file".date('m-d-Y H:i:s A e').".csv";
答案 5 :(得分:0)
尝试此实用程序功能:
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