gpt4 book ai didi

javascript - 如何在 node.js 和 Cloud Functions for Firebase 上获取正确的日期和月份?

转载 作者:行者123 更新时间:2023-12-01 03:09:31 26 4
gpt4 key购买 nike

我在 Cloud Functions for Firebase 上使用的 Node 服务器上使用纯 JavaScript。json 名称是:Trial.json

[{
"date": "0822",
"message": "Have a nice day on 0822"
},
{
"date": "0823",
"message": "Have a nice day on 0823"
},
{
"date": "0824",
"message": "Have a nice day on 0824"
},
{
"date": "0825",
"message": "Have a nice day on 0825"
},
{
"date": "0826",
"message": "Have a nice day on 0826"
},
{
"date": "0827",
"message": "Have a nice day on 0827"
},
{
"date": "0828",
"message": "Have a nice day on 0828"
},
{
"date": "0829",
"message": "Have a nice day on 0829"
},
{
"date": "0830",
"message": "Have a nice day on 0830"
},
{
"date": "0831",
"message": "Have a nice day on 0831"
}]

index.js 是

var fs = require("fs");
var contents = fs.readFileSync("trial.json");
var jsonContent = JSON.parse(contents);
console.log("Content", jsonContent)
var today = month + date;
var currentDate;
var selectedCeleb = 0;

for (var index = 0; index < jsonContent.length; ++index) {
var curr = jsonContent[index];
if(curr.date == today){
currentDate = curr;
break;
}
}
console.log("message : " + currentDate.message)
// Request Response Pair
exports.myApp = functions.https.onRequest((request, response) => {
const app = new App({ request, response });
console.log('Request headers: ' + JSON.stringify(request.headers));
console.log('Request body: ' + JSON.stringify(request.body));

function getDayMessage() {
return currentDate.message;
}

function userMessage (app) {
let dayMsg = getDayMessage();
if (app.hasSurfaceCapability(app.SurfaceCapabilities.SCREEN_OUTPUT)) {
app.ask(app.buildRichResponse()
.addSimpleResponsedayMsg))
} else {
app.ask(dayMsg, NO_INPUTS);
}
}

let actionMap = new Map();
actionMap.set(USER_INTERESTED, userMessage);
app.handleRequest(actionMap);
});

我本地的月+日返回的值为 0829而在服务器上是0827。

请帮助确定是设置问题还是代码问题,以便我可以更新代码以获得正确的值。

最佳答案

您的本地计算机可能与运行 Cloud Functions 的服务器位于不同的时区。当您在 Date 上使用 getMonth() 和 getDate() 时对象,它们将返回您本地时间的这些值,该日期可能与世界其他时区的日期不同。

getTimezoneOffset()将为您提供您的时区与 UTC 的偏移分钟数:

new Date().getTimezoneOffset()

我住在加利福尼亚州,采用太平洋标准时间,因此在我的本地计算机上返回 420。

Cloud Functions 服务器设置为 UTC,因此该函数返回 0。

您的机器会返回什么?与 Cloud Functions 服务器相比,某些值可能会让您在一天中的大部分时间处于不同的日期。 “正确”的日期取决于您的时区。如果您想要特定的时区,则必须对 Date 对象进行一些数学运算才能获取您要查找的值。

关于javascript - 如何在 node.js 和 Cloud Functions for Firebase 上获取正确的日期和月份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45941296/

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