質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

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

Q&A

解決済

1回答

2127閲覧

pcとスマホで時間の表示が違う

oroshitaruuuuu

総合スコア25

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

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

0グッド

0クリップ

投稿2018/12/05 16:10

編集2018/12/05 16:19

実現したい事

PCで表示される時間とスマホで表示される時間を一緒にしたい(日本時間にしたい)

現状

pcは日本時間で表示出来ているのですが、スマホはさらに+9時間された時間が表示されます。
ex) chromeにて確認
pc : 2018/12/06 0:30
スマホ : 2018/12/06 09:30

表示が異なる原因はOSの違いであったり、ブラウザの違いであったりあると思いますが、はっきりとはわかりません。
またその解決法もわからないので、教えていただきたいです。

ソースコード

cakephp
// config/.env export APP_DEFAULT_LOCALE="ja_JP" export APP_DEFAULT_TIMEZONE="Asia/Tokyo"
// config/app.php 'App' => [ 'defaultLocale' => env('APP_DEFAULT_LOCALE', ''), 'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', ''), 'Datasources' => [ 'default' => [ 'timezone' => '', // Asia/Tokyoと指定するとエラーが出たので、消しました
// config/bootstrap.php date_default_timezone_set(Configure::read('App.defaultTimezone'));
javascript

ajaxで通信して取ってきた時間を表示

var date = new Date(list[i]["created_t"]); var year = date.getFullYear(); var month = ("0"+(date.getMonth() + 1)).slice(-2); var day = ("0"+date.getDate()).slice(-2); var hour = ("0"+date.getHours()).slice(-2); var minutes = ("0"+date.getMinutes()).slice(-2); var created_t = year + "/" + month + "/" + day + " " + hour + ":" + minutes;

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

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

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

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

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

guest

回答1

0

ベストアンサー

WebサーバがAjaxで日時データを返す時は、基本的にISO8601形式で返すようにしましょう。
https://ja.wikipedia.org/wiki/ISO_8601

そうすればどんなブラウザもタイムゾーンを意識して、どこ→どこを正しく表示出来るようになるはずです。

しかし、JSはブラウザ毎に実装があるのでISO8601を確実に同じ時刻のDateTimeと認識出来るかは少々怪しいところがあります。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

そこで、Moment.js等の日付データを扱うのが上手いライブラリを利用すると良いでしょう。
https://momentjs.com/

投稿2018/12/05 16:34

miyabi-sun

総合スコア21158

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

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

oroshitaruuuuu

2018/12/05 16:56

ご丁寧にありがとうございます。 moment.jsを使ったところ、簡単に解決できました。 ライブラリに甘んじ過ぎるのもよく無いので、以下も試してみたいと思います。 > WebサーバがAjaxで日時データを返す時は、基本的にISO8601形式で返すようにしましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問