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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

531閲覧

PHPで、UNIXTIMEから、サイト閲覧者の時差を加味した時刻を表示する方法を知りたいです。

raisinchan

総合スコア14

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/04/30 17:47

編集2019/04/30 17:56

###実現したいこと
PHPで、UNIXTIMEから、サイト閲覧者の時差を加味した時刻を表示する方法を知りたいです。

めちゃくちゃな考えでまとまりがありませんが…

まず$baseとして13桁のUNIXTIMEがあり、これをサイト閲覧者の時差に応じて変化させようと思いました。

time_difference(); で時差を返し、その時差に応じて「Y/m/d」を出力したいのですが、どのようなソースコードになりますでしょうか?

###該当のソースコード
自分的にここまで書いてみた結果、

・そもそも$countryで取得してるのはブラウザ言語であってサイト閲覧者の地域ではないので、時差の取得に役にたたないのではないか?

・たとえ時差が取得できても、それをどのようにして$dateから計算するのか?($country_dateではその計算ができませんでした)

など、問題が山積みな状態です。

// 基本となる日時 $base = ceil( microtime(true)*1000 ); $date = $base / 1000; // サイト閲覧者の応じた時差 function time_difference ($country ){ if( $country=="cy" ){ return +8; } if( $country=="jp" ){ return +9; } } // 時差に応じた日時 $country = substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) ; $country_date = $date . time_difference( $country ) ; $result = date( "Y/m/d H:i:s", $country_date ) ; // サイト閲覧者の時差に応じて「Y/m/d」を出力したい echo $result;

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

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

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

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

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

m.ts10806

2019/04/30 20:56

そうしたい経緯や背景も記載願いたいのですが、今回やりたいことを実現することによって閲覧者はなにがおいしいのでしょうか?
guest

回答2

0

ベストアンサー

HTTPの仕様として、利用者のブラウザのタイムゾーンの情報は渡されないので、すっきり解決は難しいですね。言語設定からの類推はおっしゃる通りあんまり有効ではありません。

ブラウザの上ではjavascriptの実行環境としてタイムゾーンが設定されており、こちらはシステム設定などから自動指定されるものなので、ちゃんと機能します。

なので、なんとしてもサーバサイドで対応したいのでなければ、ブラウザの上のスクリプトで対応するのが良いと思います。

UNIXTIMEからDateのインスタンスを生成する方法があるので、それを使ってY:M:Dの表示を作成する感じですね。

投稿2019/04/30 21:37

otolab

総合スコア763

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

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

raisinchan

2019/05/01 11:47

ありがとうございます。javascriptからならどのようにしますか?
otolab

2019/05/01 14:11

https://dotinstall.com/lessons/basic_momentjs dot installで、日付の処理でよく使われるmoment.jsを解説しているものをみつけました。 動画を全部見たわけではないですが、このあたりからスタートすると良いかもしれません。
raisinchan

2019/05/01 14:13

ありがとうございます!
guest

0

JavaScript使うか
○分前みたいな相対表示にする。CarbonのdiffForHumans()

投稿2019/04/30 23:21

kawax

総合スコア10377

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

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

raisinchan

2019/05/01 11:48

JavaScriptでもいいです。相対表示にするとしてもJavaScriptということですよね。どのように相対表示にできますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問