在php中复制之前将日期附加到文件名

时间:2011-06-22 18:23:41

标签: php string copy

我试图在用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中。如果我改变它,结肠会在那里工作吗?任何建议都将在未来发挥作用。谢谢你的帮助。

6 个答案:

答案 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