<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />コンピュータの時計は、ローカル タイム ゾーンの時間を示します。おそらく、タイム ゾーンは EST (東部標準時) や EDT (東部夏時間)、あるいは GMT (グリニッジ標準時) などの 3 文字のコードとしてご存知でしょう。GMT には他にもいくつかの名前があります。UTC は妥協科学者の頭字語で、ズールー語は軍事呼称(Z、ゼロ)です。
GMT のオフセットはゼロです。 EDT は GMT-4、EST は GMT-5 です。この投稿では、コンピューターのタイム ゾーンがわからない場合に、JSL スクリプトで -4 または -5 の値を計算する方法について説明します。その値を取得したら、JMP の日付/時刻値を現地時間から GMT に変換できます。タイムゾーンを越えてデータを収集して共有する場合は、GMT が適切な選択となる可能性があります。
JSL-DLL インターフェイスを介してシステム コールを実行するのではなく、Web サイトに現在の GMT 時間を尋ねてみます。これは、Web サイトの応答のヘッダー情報の一部になります。
(以下の JSL 添付ファイルには、ここに表示されているものよりももう少し詳しいエラー チェックが含まれています。)
(以下に時間的な不連続がある場合は、この投稿が数時間かけて作成されているためです。)
(JSL ソケットは SSL または HTTPS 接続をサポートしません。ほとんどの HTTPS 作業には、internetOpen() を使用できます。)
(これまでのところ EDT のみでテストされています。発見したことを教えてください。)
まず、JSL ソケットを作成し、Web サイトに接続します。
// open a socket connection to a web sitetCall = Socket();RC = tcall << connect( "www.jmp.com", "80" ); // pretty much any site will work. this is a short redirect answer...
{「接続」、「OK」}
ソケットメソッド、のような<<接続する、リストを返します。リストの最初の値はメソッド名を繰り返し、2 番目の値は戻りコード (上記の「ok」) です。この接続は 1 分程度存続し、ユーザーが何かを要求するのを待ちます。Web サイトのルート ページを尋ねてみましょう。
// request the root page of the siteRC = tcall << Send( Char To Blob( "GET / HTTP/1.0~0d~0a~0d~0a", "ASCII~HEX" ) );// grab the local time between sending the request and getting the responselocalTime = As Date( Today() );
{"送信", "ok", Char To Blob( "", "ascii~hex" )}
これも OK リターン コードです。素晴らしいです。結果を取得しましょう:
// prepare a buffer to collect the resultsreceivedData = charToblob("");while(RC[2] == "ok", // a loop to receive data RC = tCall << Recv( 1000 ); // receive up to 1000 bytes at a time if( RC[2] == "ok", receivedData ||= rc[3]; ); // concatenate if got some);Char から Blob(
「HTTP/1.1 301 Moved Permanently~0D~0AD日付: Fri, 30 Oct 2015 16:57:43 GMT~0D~0AServer: Apache~0D~0ALocation: http://www.jmp.com/~0D~0AContent-Length: 227~0D~0A接続:閉じる~0D~0Aコンテンツタイプ:text/html; charset=iso-8859-1~0D~0ASet-Cookie:BIGipServerwww.jmp.com-pool=201698709.20480.0000; path=/~0D~0A~0D~0A<~21DOCTYPE HTML PUBLIC ~22-//IETF//DTD HTML 2.0//EN~22>~0A~0A301 永久に移動< /title>~0A~0A
完全に移動しました
~0Aドキュメントは移動されました http://www.jmp.com/~22 >ここ。
~0A~0A","ascii~hex"
)
そこではたくさんのことが起こっています。に焦点を当ててください。 ~0D~0A日付: 2015 年 10 月 30 日金曜日16:57:43 GMT~0D~0A受信データに埋め込まれた部分。(現地時間 (EDT) の 12:57 です。)正規表現日付を選択します:
GMT = Informat( Regex( Char( receivedData ), "~0D~0ADate: [A-Za-z]+, (.*?) GMT~0D~0A", "\1" ) );
2015年10月30日:16:57:43
タイムゾーンオフセットに変換します。必要に応じてマイナスを追加できます...
tz = Round( (GMT - localTime) / In Hours( 1 ), 3 );
4
(これに基づいて運用システムを構築する場合は、この数値を検証する別の方法を検討してください。Web サイトの時刻が正確であるか、利用可能であるという保証はありません。)
したがって、コンピューターの時計が GMT-4 であることがわかっているので、現地時間に 4 を加えて GMT にすることができます。
Format( Today() + In Hours( tz ), "y/m/d h:m:s" )
「2015/10/30 5:05:33 PM」
InHours は 4 時間 (tz 単位) を秒に変換するため、日付/時刻値 (秒単位) に追加して再フォーマットできます。ここは1時過ぎです。英国人の同僚はすでに週末に向けて帰国しているようです。
次回は昼夜マップです。

2019 年 11 月 26 日更新: @ブライアンブーンより単純なバージョンがありますここ、httpリクエストを使用します。