<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />컴퓨터의 시계는 현지 시간대의 시간을 보여줍니다.시간대를 EST(동부 표준시), EDT(동부 일광 절약 시간제) 또는 GMT(그리니치 표준시)와 같은 세 글자 코드로 알고 있을 것입니다.GMT에는 몇 가지 다른 이름이 있습니다. UTC는 타협 과학자와 Zulu의 약어는 군사 명칭입니다(Z는 0).
GMT의 오프셋은 0입니다. EDT는 GMT-4이고 EST는 GMT-5입니다. 이 게시물은 컴퓨터가 어느 시간대에 있는지 모른 채 JSL 스크립트에서 -4 또는 -5 값을 계산하는 방법에 관한 것입니다.해당 값이 있으면 JMP 날짜-시간 값을 현지 시간에서 GMT로 변환할 수 있습니다.시간대에 걸쳐 데이터를 수집하고 공유하는 경우 GMT가 좋은 선택일 수 있습니다.
JSL-DLL 인터페이스를 통해 시스템 호출을 시도하는 대신 웹 사이트에 현재 GMT 시간이 무엇인지 물어볼 것입니다.이것은 웹 사이트 응답의 헤더 정보의 일부입니다.
(여기에 보이는 것보다 약간 더 많은 오류 검사가 있는 JSL 첨부 파일이 아래에 있습니다.)
(아래에 시간적 불연속성이 있다면 이 게시물이 몇 시간에 걸쳐 구성되었기 때문입니다.)
(JSL 소켓은 SSL 또는 HTTPS 연결을 지원하지 않습니다.대부분의 HTTPS 작업에 internetOpen()을 사용할 수 있습니다.)
(지금까지 EDT에서만 테스트되었습니다.당신이 발견한 것을 알려주세요.)
먼저 JSL 소켓을 만들고 웹 사이트에 연결합니다.
// 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" 반환 코드입니다.이 연결은 1분 정도 유지되며 사용자가 무언가를 요청할 때까지 기다립니다.웹 사이트의 루트 페이지를 요청해 보겠습니다.
// 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() );
{"보내기", "확인", Char To Blob( "", "ascii~hex" )}
또 다른 확인 반환 코드입니다. 훌륭합니다!이제 결과를 얻습니다.
// 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);문자를 블롭으로(
"HTTP/1.1 301 영구 이동됨~0D~0ADate: Fri, 30 Oct 2015 16:57:43 GMT~0D~0AServer: Apache~0D~0ALocation: http://www.jmp.com/~0D~0A콘텐츠 길이: 227~0D~0A연결: 닫기~0D~0A콘텐츠 유형: 텍스트/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","아스키~헥스"
)
거기에서 많은 일이 일어나고 있습니다.에 집중하세요. ~0D~0AD날짜: 2015년 10월 30일(금) 16:57:43 GMT~0D~0A receivedData에 묻힌 부분.(현지 시간으로 12시 57분입니다.) A 정규식 날짜를 선택합니다:
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
(이를 중심으로 프로덕션 시스템을 구축하는 경우 이 수치를 검증하는 다른 방법을 고려하십시오.웹 사이트의 시간이 정확하거나 사용 가능하다는 보장은 없습니다.)
따라서 내 컴퓨터 시계가 GMT-4임을 알면 현지 시간에 4를 더하고 GMT를 가질 수 있습니다.
Format( Today() + In Hours( tz ), "y/m/d h:m:s" )
"2015/10/30 오후 5:05:33"
InHours는 4시간(tz)을 초로 변환하여 날짜-시간 값(또한 초)에 추가한 다음 형식을 다시 지정할 수 있습니다.여기 1시 직후입니다. 영국 동료들이 이미 주말에 집으로 향하는 것을 봅니다.
다음 시간: 낮/밤 지도.

2019년 11월 26일 업데이트: @bryan_boone 더 간단한 버전이 있습니다 여기 , http 요청을 사용합니다.