javascript - 从日期中提取月份和年份并显示为 MMM-YY

标签 javascript datetime google-apps-script google-sheets

我是 Google Apps 脚本的新手,我在日期格式转换方面遇到困难

我的源列的数据格式为“mm/dd/yyyy”。我想将其更改为“MMM-YY”,即我只需要提取月份和年份。 以下是我不成功的尝试

 // Get all values in column A on sheet titled "Transactions"
var ss = SpreadsheetApp.getActiveSpreadsheet();

var sourcesheet = ss.getSheetByName("Transactions");
var targetsheet = ss.getSheetByName("stage");  

  // get source range
  var source = sourcesheet.getRange("A:J");
  //get the data and place in array
  var alldata = sourcesheet.getRange("A:I").getValues();
  Logger.log(alldata.length)  ;

  //********************************************************************************//
  // loop through date column and change format
 for(var i=1; i<alldata.length; i++)    
  {

    alldata[i][0]= new Date(alldata[i][0]);

    var Mnth = alldata[i][0].getMonth() ;
    var Year = alldata[i][0].getYear() ;
    var Day = alldata[i][0].getDay() ;

    var Day2 = new Date(Year,Mnth,Day);

    alldata[i][10] = Utilities.formatDate(Day2, Session.getScriptTimeZone(), "MMM-YY");


  }


  //********************************************************************************//
  // get destination range  
  var destination = targetsheet.getRange(2, 1, alldata.length, 11);

  // clear contents of destination sheet
  destination.clear();
  // copy values to destination range
  destination.setValues(alldata);

}

示例

源列值 =“01/06/2019”值写入输出列“1/19/2019”,但显示为“Jan-19”

最佳答案

替换

alldata[i][10] = Utilities.formatDate(Day2, Session.getScriptTimeZone(), "MMM-YY");

alldata[i][10] = "'" + Utilities.formatDate(Day2, ss.getSpreadsheetTimeZone(), "MMM-yy");

说明

  1. 添加撇号以防止 Google 表格将 MMM-YY 格式的值解释为 MMM-dd
  2. YY 替换为 yy
  3. Session.getScriptTimeZone() 替换为 ss.getSpreadsheetTimeZone()

注释

  1. YY 表示弱年份,可能会导致一年中某些日期出现一些错误。为了防止这种情况,请改用yy
  2. Google 表格和 Google Apps 脚本中用于日期格式的某些字母可能具有不同的含义。请参阅引用资料以正确使用它们。
  3. 脚本时区和电子表格时区可能不同。由于您要将值传递到电子表格,因此最好使用其时区而不是脚本中的时区。
<小时/>

将日期显示为 MMM-yy 作为日期值而不是文本(字符串)值的解决方案不需要使用 Google Apps 脚本,而是使用 Google 表格数字格式功能(单击“格式”>“数字”>“更多格式”>“更多日期和时间格式”),您可以使用 Google Apps 脚本通过 setNumberFormat(numberFormat) 设置数字格式。

引用文献

日期和数字格式

在 Google 表格中

Utilities.formatDate(日期,时区,格式)中

关于javascript - 从日期中提取月份和年份并显示为 MMM-YY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59276913/

相关文章:

mysql - 从表中删除值依赖于另一行的行

python - 以 AM/PM 格式绘制 Pandas Datetime 时间序列

Python 和 SQL Server : Issue with datetime Data

javascript - 如何使用 Google 脚本向 Trello 上的自定义字段添加值?

javascript - 如何使用 Google App Script HTML 服务从用户获取 VideoListByID 查询数据

javascript - 更改 CSS,其中 font-weight :800

JavaScript 函数原型(prototype)?

javascript - 如何使用 javascript 获取动态加载的 swf 的大小?

javascript - 如何添加在调用 tinymce get 函数时触发的事件监听器?

javascript - Google Sheets 脚本查找具有值的单元格