【问题标题】:Error: Timezone "gmt+0200" is not recognized错误:时区“gmt+0200”无法识别
【发布时间】:2019-07-30 06:22:04
【问题描述】:

我有一个问题。

我正在尝试通过 *.js 文件将一些数据从一个表“传输”到彼此。一切都很好,除了一件事。这个函数告诉我:

Error: Timezone "gmt+0200" is not recognized

这是我的功能

async function submitCompletationCG(database, ulogin, idc) {
  await connectToSpecificDatabase(database);
  const AC_ID = `SELECT * FROM public.cg_actualcompletations WHERE UserLogin = '`+ulogin+`';`;
  let AC_IDs = await client.query(AC_ID);
  const ACC_ID = `SELECT * FROM public.cg_actualcompletationscondensed WHERE UserLogin = '`+ulogin+`';`;
  let ACC_IDs = await client.query(ACC_ID);
  const DEPOT = `SELECT * FROM public.cg_actualdepots WHERE UserLogin = '`+ulogin+`';`;
  let DEPOTs = await client.query(DEPOT);

  let depot_from, depot_to, code_from, code_to;

  for(let Depot of DEPOTs.rows) {
    depot_from = Depot.depot_from;
    depot_to = Depot.depot_to;
    code_from = Depot.code_from;
    code_to = Depot.code_to;
  }

  for(let Completation of ACC_IDs.rows) {  //Transfer all Completations Condensed
    const ACC_Copy = `INSERT INTO public.cg_completationscondensed(
                      id_c, userlogin, barcode, quantity, adate)
                      VALUES ('`+idc+`', '`+ulogin+`', '`+Completation.barcode+`', '`+Completation.quantity+`', '`+Completation.adate+`');`;
    await client.query(ACC_Copy);
    const ACC_Delete = `DELETE FROM public.cg_actualcompletationscondensed
                        WHERE id = `+Completation.id+`;`;
    await client.query(ACC_Delete);
  }

  for(let Completation of AC_IDs.rows) {  //Transfer all Completations
    const AC_Copy = `INSERT INTO public.cg_completations(
                      id_c, userlogin, barcode, quantity, adate)
                      VALUES ('`+idc+`', '`+ulogin+`', '`+Completation.barcode+`', '`+Completation.quantity+`', '`+Completation.adate+`');`;
    await client.query(AC_Copy);
    const AC_Delete = `DELETE FROM public.cg_actualcompletations
                        WHERE id = `+Completation.id+`;`;
    await client.query(AC_Delete);
  }

  const SUB_UArch = `INSERT INTO public.cg_userarch(
                      userlogin, id_c, depot_from, depot_to, code_from, code_to)
                      VALUES ('`+ulogin+`', '`+idc+`', '`+depot_from+`', '`+depot_to+`', '`+code_from+`', '`+code_to+`');`;
  await client.query(SUB_UArch);

  const SUB_DKill = `DELETE FROM public.cg_actualdepots WHERE UserLogin = '`+ulogin+`';`;
  await client.query(SUB_DKill);

  return true;
}

我应该在 Angular 文件中的某处设置时区吗?还是数据库有问题?忘了说我正在使用 PostgreSQL。 ADate 列是类型“无时区的时间戳”,之前它是“有时区的时间戳”,但我认为它会导致问题并更改它。

我在这一行遇到了这个问题:

for(let Completation of ACC_IDs.rows) {  //Transfer all Completations Condensed
    const ACC_Copy = `INSERT INTO public.cg_completationscondensed(
                      id_c, userlogin, barcode, quantity, adate)
                      VALUES ('`+idc+`', '`+ulogin+`', '`+Completation.barcode+`', '`+Completation.quantity+`', '`+Completation.adate+`');`;
    await client.query(ACC_Copy);
    const ACC_Delete = `DELETE FROM public.cg_actualcompletationscondensed
                        WHERE id = `+Completation.id+`;`;
    await client.query(ACC_Delete);
  }

在下一个for循环中,因为也有对日期的操作。

【问题讨论】:

  • 在你的函数中你是从哪里得到的?
  • @VLAZ 在第二个 for 循环中,我评论了“传输所有压缩完成”

标签: node.js timezone angular6


【解决方案1】:

我解决了这个问题。我在互联网上的任何地方都找不到答案,所以我自己做。我在 for 循环的开头添加了这两行:

let date = new Date(Completation.adate);
    date = date.toLocaleDateString() + " " + date.toLocaleTimeString();

然后将db查询改为:

const ACC_Copy = `INSERT INTO public.cg_completationscondensed(
                      id_c, userlogin, barcode, quantity, adate)
                      VALUES ('`+idc+`', '`+ulogin+`', '`+Completation.barcode+`', '`+Completation.quantity+`', '`+date+`');`;

现在终于可以正常使用了!

【讨论】:

    猜你喜欢
    • 2013-07-11
    • 1970-01-01
    • 2019-02-26
    • 2023-03-15
    • 2020-01-01
    • 2016-08-21
    • 1970-01-01
    • 2011-10-25
    • 2015-04-29
    相关资源
    最近更新 更多