【问题标题】:stop auto convert timezone停止自动转换时区
【发布时间】:2018-10-25 10:41:02
【问题描述】:

Java 脚本自动转换时区,如何停止?

我创建了一个 api,它从 mysql 表中获取数据并将其显示为 json 格式,但问题是除了 datetime 列之外,所有内容都按预期进行。 只有时间戳字段(DateTime Columns)自动改变了为什么?

Mysql 存储过程输出

JsonResponse

[
    {
        "OrderId": 2164294,
        "MRP": 270,
        "LedId_Party": "757",
        "ItemDetailId": "10000196",
        "NAME": "Retail Graph Admin",
        "OrderNo": "RTG7",
        "OrderDate": "2018-10-25T11:31:29.896Z",
        "Qty": 15,
        "Remarks": "test order",
        "CompanyId": " R01142\\d",
        "OtherPartyCode": "757",
        "PartyName": "Tanaya das",
        "OtherProductCode": "10000196",
        "ProductName": "ROLIFLO OD CAP 404 10S",
        "Company": "RANBAXY  RESPIRATORY",
        "Packing": "10S",
        "Free": 1,
        "CreatedDate": "2018-10-25T11:31:29.896Z",
        "Scheme": null,
        "PTR": 0,
        "Delivery": 1,
        "SalesmanCode": null,
        "DeliveryMode": "To Deliver",
        "ProductRemarks": null,
        "SchemeType": null
    },
    {
        "OrderId": 2164294,
        "MRP": 198.25,
        "LedId_Party": "757",
        "ItemDetailId": "10000426",
        "NAME": "Retail Graph Admin",
        "OrderNo": "RTG7",
        "OrderDate": "2018-10-25T11:31:29.896Z",
        "Qty": 20,
        "Remarks": "PR:test product GR:test order",
        "CompanyId": " R01142\\d",
        "OtherPartyCode": "757",
        "PartyName": "Tanaya das",
        "OtherProductCode": "10000426",
        "ProductName": "BAKFLEX 8MG 10S",
        "Company": "INTAS[ARRON]9332940350[SUMAN]",
        "Packing": "10S",
        "Free": 0,
        "CreatedDate": "2018-10-25T11:31:29.896Z",
        "Scheme": null,
        "PTR": 0,
        "Delivery": 1,
        "SalesmanCode": null,
        "DeliveryMode": "To Deliver",
        "ProductRemarks": "test product",
        "SchemeType": null
    }
]

节点代码:

app.get('/Admin/api/GetPurchaseOrderToUpload', async (req, res) => {
        const jsonobject = await objPurchaseOrder.GetPurchaseOrderToUpload(DecryptedDistributorCode);
        return res.status(200).json(jsonobject);
    });

PurchaseOrder.js

var pool =  require('../models/poolconnection');
// const mongoose = require('mongoose');
function GetPurchaseOrderToUpload(DistributorCode) {
    return new Promise((resolve,reject) => {
        var query = 'call PR_GetPurchaseOrderToUpload(?)';
        pool.query(query,[DistributorCode],(err,result,fields) => {
            if(err) reject(err);
            else {
                resolve(result[0]);
            }
        });
    });
}
module.exports = {
    GetPurchaseOrderToUpload: GetPurchaseOrderToUpload,
 }

【问题讨论】:

  • 您收到的时间戳是 ISO 格式。它以 UTC 显示日期/小时
  • 那么我该如何停止转换呢?
  • 您确定您的数据库将数据存储在 TimeZone 而不是 UTC 中吗?
  • 由于您没有包含任何代码来显示您如何将数据从一种格式实际移动到另一种格式,因此我们不可能知道哪些进程可能正在对其进行操作以更改日期的输出方式.
  • @ADyson,用代码更新问题

标签: javascript node.js


【解决方案1】:

只需要为mysql连接设置dateStrings属性为true

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret',
  dateStrings : true
});

【讨论】:

    【解决方案2】:

    Json 响应是从 Web API(节点应用程序)生成的。可能您应该在服务器级别本身坚持使用一个时区或 UTC 时区。您可以使用 moment.tz 将 datetime 转换为特定时区,它真的很有帮助。

    https://momentjs.com/timezone/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多