如何在Google Sheets中将2021-08-17T22:42:00.000Z转为YYYY-MM-DD格式
Google Sheets ISO 8601时间字符串转纯日期方法
下面提供3种可直接落地的方案,转换后得到的日期值都支持正常做日期计算:
方案1:单行单元格转换
如果只需要转换单个或少量单元格,假设待转换内容存储在A1单元格,任选空白单元格输入以下公式即可:
- 截断提取法(兼容性最好):
=DATEVALUE(LEFT(A1,10))
直接提取字符串前10位的YYYY-MM-DD片段,通过DATEVALUE转为Google Sheets可识别的日期数值 - 完整解析法:
=INT(TO_DATE(A1))
先把整个ISO字符串转为带时间的日期值,用INT去掉代表时间的小数部分,保留纯日期值
转换后选中输出单元格,在顶部菜单「格式」→「数字」中选择「日期」,即可显示为YYYY-MM-DD格式。
方案2:整列自动批量转换
如果需要一次性转换整列内容,且后续新增数据也要自动处理,在目标列第一行的空白单元格输入数组公式即可:=ARRAYFORMULA(IF(A:A="",,DATEVALUE(LEFT(A:A,10))))
公式会自动跳过空单元格,整列的转换结果会一次性生成,不需要逐行拖动填充。
方案3:原地永久转换(无需保留原字符串)
如果要直接把原列的字符串替换为纯日期值,可以用Apps Script实现:
- 点击顶部菜单「扩展程序」→「Apps Script」打开脚本编辑器
- 粘贴以下代码,修改
getRange参数为你实际的目标列范围:
function convertISOToPureDate() { const sheet = SpreadsheetApp.getActiveSheet(); // 下面的"A:A"替换为你存储ISO字符串的列范围 const targetRange = sheet.getRange("A:A"); const values = targetRange.getValues(); const convertedValues = values.map(row => { const cellVal = row[0]; if (typeof cellVal === 'string' && cellVal.includes('T') && cellVal.endsWith('Z')) { return [new Date(cellVal.slice(0,10))]; } return row; }); targetRange.setValues(convertedValues); // 统一设置单元格格式为YYYY-MM-DD targetRange.setNumberFormat("yyyy-mm-dd"); }
- 点击运行按钮,完成授权后即可完成整列的原地转换。
注意:原数据为字符串类型,直接修改单元格显示格式无法实现转换,必须通过上述方法转为日期数值后才能正常进行日期差计算、日期范围筛选等操作。
内容的提问来源于stack exchange,提问作者mseager
相关产品推荐
相关产品推荐

