<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />コンピュータの時計は、ローカル タイム ゾーンの時間を示します。EST (東部標準時) や EDT (東部夏時間)、あるいは GMT (グリニッジ標準時) などの 3 文字のコードとしてタイム ゾーンを知っていることでしょう。GMT には他にもいくつかの名前があります。UTC は妥協科学者の頭字語であり、Zulu は軍の呼称 (Z、ゼロ) です。
GMT のオフセットはゼロです。 EDT は GMT-4、EST は GMT-5 です。この投稿は、コンピュータがどのタイム ゾーンにあるかを知らなくても、JSL スクリプトで -4 または -5 の値を計算することに関するものです。その値を取得したら、JMP の日時値を現地時間から GMT に変換できます。タイム ゾーン間でデータを収集して共有する場合は、GMT が適している可能性があります。
JSL-DLL インターフェイスを介してシステム コールを行うのではなく、現在の GMT 時刻を Web サイトに問い合わせてみます。これは、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() );
{"Send", "ok", Char To Blob( "", "ascii~hex" )}
もう 1 つの 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~0ADate: Fri, 30 Oct 2015 16:57:43 GMT~0D~0AServer: Apache~0D~0ALocation: http://www.jmp.com/~0D~0Aコンテンツの長さ: 227~0D~0AConnection: close~0D~0AContent-Type: 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" ) );
30Oct2015: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 17:05:33」
InHours は 4 時間 (単位は tz) を秒に変換し、日時の値 (単位は秒) に加算してから再フォーマットします。ここは 1 つ後です。英国の同僚が週末に向けてすでに帰宅しているのが見えます。
次回は昼夜マップ。

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