🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1513閲覧

[dayjs] iso8601形式の時刻をYYYY年M月DD日 HH時mm分ss秒に変換したい

kosuke_ikeura

総合スコア19

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/01/08 03:40

###実行環境
aws lambda
ランタイム:Node.js 12.x

###やりたいこと
iso8601形式の時刻を受け取って、YYYY年M月DD日 HH時mm分ss秒形式に変換する関数を作成したい。

###起きているエラー
エラーは起きていないが、返ってくる時刻がGMTになってしまっている。

####関数

javascript

1export const makeCreatedAt = async(createdAt: any) => { 2 const dayjs = require('dayjs') 3 const utc = require('dayjs/plugin/utc') 4 const timezone = require('dayjs/plugin/timezone') 5 dayjs.extend(utc); 6 dayjs.extend(timezone); 7 dayjs.tz.setDefault('Asia/Tokyo'); 8 console.log(createdAt); 9 const formatTime = await dayjs(createdAt).local().format('YYYY年M月DD日 HH時mm分ss秒') 10 console.log(formatTime) 11 return formatTime 12}

この関数に"2021-01-06T11:09:06+09:00"を突っ込むと、
2021年1月06日 02時09分06秒という値が返ってきます。
本来期待している値は、2021年1月6日 11時09分06秒です。

何かご不明点があれば、聞いてくださいますと幸いです。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YND_teratail

2021/01/28 04:20

こちら側でそのコードを実行してみたところ、期待している値(2021年1月6日 11時09分06秒)が返ってきました。本当にそのコードを実行すると、間違った値が返ってくるのか。また、間違っている値が返ってきたら、引数に間違いがないかどうかの確認をよろしくお願いします。
kosuke_ikeura

2021/01/28 14:44

コメントありがとうございます。 実行環境はAWSLambdaです。 YND_taratailさんのいう通り、pcのnode(v14.7.0)では動作が確認できるのですが、AWSLambda上で実行すると、時刻がずれてしまいます。 おそらくエラーの原因はAWSLambdaという実行環境にあるのかと思います。 もしご知見ありましたら、ご意見いただければ幸いです。 よろしくお願いいたします。
guest

回答1

0

自己解決

https://qiita.com/r_plus/items/96678b432a1f4fdfc318

こちらに解決法が記載されていました。
lambdaの環境変数のTZを"Asia/Tokyo"とすれば、日本時刻がreturnされます。

投稿2021/01/29 02:12

kosuke_ikeura

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問