gpt4 book ai didi

mysql - Excel 日期值检索为 DD/MM/YY,如何将其格式化为 YYYY-MM-DD?

转载 作者:行者123 更新时间:2023-11-29 11:51:40 25 4
gpt4 key购买 nike

转换从 Excel 工作表检索到的日期时,YEAR 将插入为 20XX 而不是 19xx。

点击 Excel 工作表中的单元格,我们可以知道年份,并且显示正确,但插入时 19xx 被插入为 20xx。

当我回显从 Excel 工作表中检索的日期时,例如 -

    echo date('Y-m-d', strtotime($data[3]));
exit(); //output 1970-01-01

echo $data[3];
exit(); //output 22/11/66

我尝试了以下方法-

1. $dob=date('Y-m-d', strtotime(str_replace('/', '.', $data[3])));

输出 - 有些年份是正确的,但有些 19xx 显示为 20xx

示例 - 2066-11-22 而不是 1966-11-22

2. $dob = implode('-', array_reverse(explode('/', $data[3])));

输出-YY-MM-DD

3. $dob=date('Y-m-d', strtotime(str_replace('/', '-', trim($data[3]))));

输出 - 1970-01-01

从模型中的 Excel 中检索数据-

function upload(){
ini_set('auto_detect_line_endings',TRUE);
/* if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {

readfile($_FILES['userfile']['tmp_name']);
}*/
if (($handle = fopen($_FILES['userfile']['tmp_name'], "r")) !== FALSE) {
$firstRow = true;
while (($data = fgetcsv($handle, 4096, ",",'"')) !== FALSE)
{
$num = count($data);
if($data[0]!=""){
//echo implode('-', array_reverse(explode('/', $data[3])));exit();
if($data[3]!="")
{
//$dob=date('Y-m-d', strtotime(str_replace('/', '.', $data[3])));
//$dob=date("Y-m-d", strtotime($data[3]));
//$dob = implode('-', array_reverse(explode('/', $data[3])));
//$dob=date("Y-m-d", strtotime($date));
$dob=date('Y-m-d', strtotime(str_replace('/', '-', trim($data[3]))));
}
$data1 = array(
'member_name' => $data[1],
'member_phone' => $data[2],
'member_dob' => $dob,
'member_outlet' => $data[4]
);
//echo "<pre/>";print_r($data) ;exit();
$this->db->insert('member_info', $data1);
$member_id = $this->db->insert_id();
}

}

//echo "<pre/>";print_r($data) ;exit();
fclose($handle);
}
ini_set('auto_detect_line_endings',FALSE);
}

}

有什么建议吗?

最佳答案

我认为下面的代码很糟糕 - 我宁愿尝试更改 Excel 电子表格的日期格式 - 但它适用于您给出的示例日期:

$data[3] = '22/11/66'; 
$arr = explode('/', $data[3]);
$dob = date("Y-m-d", strtotime('19' . $arr[2] . '/' . $arr[1] . '/' . $arr[0]));
echo var_dump($dob);

PHP 处理 1970 年之前的两位数年份的方式似乎存在问题。使用 PHP documentation 中的 dd.mm.yy 格式的示例日期我明白了...

$dob = date("Y-m-d", strtotime("30.6.08"));
echo var_dump($dob); // 2008-06-30

$dob = date("Y-m-d", strtotime("30.6.66"));
echo var_dump($dob); // 1970-01-01

$dob = date("Y-m-d", strtotime("30.6.1966"));
echo var_dump($dob); // 1966-06-30

我需要将“19”添加到两位数年份以使 strtotime 理解年份。

关于mysql - Excel 日期值检索为 DD/MM/YY,如何将其格式化为 YYYY-MM-DD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33949817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com