• ベストアンサー

タイムゾーン省略文字列が格納された内容方法を教えてください

タイムゾーンを取得させる方法で相談に乗って頂きたいです。 tzfile.hにある、 struct tzheadに tzh_charcntがありそこには「タイムゾーン省略形文字列の文字が格納される」のだそうですが そこに格納されたであろう「JST-9」もしくは「JST」なる文字を取得させる方法がわかりません。 ご存じの方!ぜひ何でもいいので教えてください! お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4845/10256)
回答No.1

>「タイムゾーン省略形文字列の文字が格納される」のだそうですが 違いますね。マニュアルには、下記のように書いてあります。 =>ファイルに記述されている「タイムゾーン略式文字列(time zone abbreviation string)」の個数。 もし、ローカルのタイムゾーンが知りたいなら、こんな感じで。 #include <time.h> #include <stdio.h> int main() { tzset(); printf("%s\n",tzname[0]); } 詳しくは、man tzset を。

vis3sock
質問者

お礼

ありがとうございます。 タイムゾーンの「JST」を取得できました! そこでお伺いできるなら、(ずうずうしくすみません) [___]#_cat__/etc/localtime に格納されたバイナリデータにおいて この場合「JST」を見つけるのは、tzfile.hを参考にポインターを幾分かずらしてタイムゾーンを知る。 って方法があるならお伺いできるならば幸いです。 日本の場合は、いくつ目にあるけど、アメリカの場合のタイムゾーンは違ってきたりする・・・ みたいなので、参考意見だけでも聞かせてください

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4845/10256)
回答No.2

>tzfile.hを参考にポインターを幾分かずらしてタイムゾーンを知る。 出来ると思いますが自信なし。ただ、tzset()はそうやってると思います。 man tzfile も参照。でも日本語のman tzfileは訳がおかしいですね。

vis3sock
質問者

お礼

ご回答ありがとうございます。 man_tzfileをググってみると、参考にできるサイトが多数ありましたので やってみます。

関連するQ&A

  • 異なるタイムゾーンのタイムサーバーとの時刻同期方法

    サーバー管理初心者の為、基本的なことかもしれませんがご教示下さい。 Unix(Solaris・AIX)、Linux(RedHat)でxntpdを用いてタイムサーバーと時刻同期設定をしようとしています。タイムサーバのタイムゾーンはJSTなのですが、タイムクライアント側{Unix(Solaris・AIX)、Linux(RedHat)の各サーバー}のタイムゾーンはGMTになっています。この場合でも、タイムゾーンがサーバー・クライアントと同じ時同様に、ntp.confでタイムサーバの設定を実施後にxntpdを起動すればJSTのタイムサーバーから取得した時刻を自動的にGMTのタイムゾーンに変換してくれますか?又、タイムサーバーとタイムクライアント側のタイムゾーンが異なると同期が取れないという場合は、サーバー・クライアントのタイムゾーンが異なった状態のままで、どの様にすれば同期が取れる様になるか、その方法を教えて頂ければと思います。 宜しくお願いします。

  • 文字列が格納されているポインタからの取出し

    1.DumpDatというポインタに、テキストファイルから読み出した文字列(=aabb)を格納します。 2.cPtr=pDoc->GetDumpData(); にて、DumpDatのアドレスを取得し、cPtrに格納します。 3.wsprintf(cData,"%02X",*cPtr);にて、文字列を取り出し16進表記表示で、cDataに格納します。 4.TextOut(表示する文字数,文字の高さ,cData)で、cDataを表示します。 このとき、 1の時:DumpDatにファイルから読み出したデータは「(aabb)が入っていると考えています。 2の時:cPtrには、アドレスが格納されていると考えています。 3の時:cDataには、(61,61,62,62)が入ると考えています。 4の時:(61 61 62 62)が表示されると考えています。 <結果> 考えた内容と結果が異なりましたので、トレースしてみたところ、  ・3の時に、「cData」には、(61)のaの一文字しか格納されていませんでした。  ・結果、4の時に表示される文字は、61の1文字分でした。 3の段階で、全文字を取り出すのではなく、1文字文(61)しか取り出さないのはなぜなのでしょうか? ⇒(61 61 62 62)が抜けませんでした。 <質問> ポインタから文字列を取り出す際は、1文字しか取り出さないのでしょうか? ご教授よろしくお願いします。

  • テキストファイルの内容を文字列として格納する方法を教えてください。

    windows xp、visual C++でプログラムを作成している初心者なんですが、コンマ(,)で区切られたテキストファイルの一部分を文字列として取得する方法が知りたいです。たとえば"sample.text"というファイル名で、 "BAAE0001","0","8","1000100010001000" "BAAE0002","0","8","1000100010001010"  ・  ・  ・ と続いていくテキストなんですが、一行目のBAAE0001をa1に入れ、0をb1に入れ、8をc1に入れ、1000100010001000をd1に入れて、二行目以降もa1、b1…の数字の部分を1ずつ増やして同じように格納していくというふうにしたいです。わかる方、いい方法がある方がいましたらどうか教えてください。

  • 変数に格納している文字列の読み込み

    ある変数($text)にHTMLデータが格納されています。 その変数内の文字列を、1行ずつ読み込む方法はあるのでしょうか。 $textをファイルに変換して読み込むべきでしょうか。 ぞ存知の方、ご教授をお願いします。

    • ベストアンサー
    • PHP
  • 文字列を time 型に変換するには。

    文字列を time 型に変換するには。 お世話になります。 PostgreSQL 8.2 & PgAdmin 1.6.3(WinServer 2003)を使用しています。 varchar 型のカラムに格納されている時刻を表す文字列('9:15' など)を time 型に変換してビューを作成する必要があるのですが、できずに困っています。 具体的には... 「table1」というテーブルに「時刻」(varchar 型)という名前のカラムを作成し、「9:15」という文字列を格納しておきます。 これをもとにビュー(view1)を作ろうとしているのですが、select 文のところで 、ERROR: syntax error at or near "時刻" SQLステート:42601 というエラー(構文エラー)が出てしまいます。  select time 時刻 from table1  結果:ERROR: syntax error at or near "時刻" SQLステート:42601 ちなみに、時刻を文字列で指定してやると、ちゃんと time 型で結果が返ります。  select time '9:15'  結果:09:15:00 抜本的に方法が間違っているとはおもうのですが、いくら調べてもこれを解決できるようなサイトが見当たりませんでした。 文字列を time 型に変換するにはどのようにしたらよいのかご教示いただけないでしょうか。 よろしくお願いします。

  • 配列にある文字列を1つの変数に改行付きで格納する方法

    配列にある文字列を1つの変数に改行付きで格納する方法 Array ( [0] => レタス [1] => トマト [2] => きゅうり ) などの配列を $yasai 変数へ ------ レタス トマト きゅうり ------ と格納してテキスト表示させたいのですが、どのようにすれば可能でしょうか? そもそも可能なのでしょうか?ご存知の方、いらっしゃいましたら宜しくお願いします。

    • ベストアンサー
    • PHP
  • 特定のタイムゾーンからtime_tを得る方法

    こんにちは。 サポートが終わってしまったVC++6.0で開発した案件の改造を行っています。OSはWindowsXPです。 その中で、time_t(32ビット)をインタフェースとするライブラリを使う必要が要件上あるのですが、その元になる日時情報が、世界各地のログ情報の中の日時情報で、その形式が各地のタイムゾーンによる文字列("2012/03/21 12:34:56")になっていています。各ログがどのタイムゾーンかは分かるので、TzSpecificLocalTimeToSystemTime関数を使えばUTCのSYSTEMTIME構造体には変換できそうなのですが(マニュアルを見ただけで試してはいません)、それをtime_tに変換する方法が分からず、困っています(mktimeなどは変換元をローカルタイムとして扱うため)。自分で計算するライブラリでも結構ですので、何か良い変換方法がありましたら、ぜひご教授頂きたいのですが。 またVC++6.0なので、.NET Frameworkを使わない方法での対応で考えております。 よろしくお願い致します。

  • mysqlで長さ無制限の文字列を格納することはできますか?

    mysqlを用いて掲示板を作りたいです。その際に、簡素化のため、掲示板の全てのデータをmysqlに格納したいと思っています。 また、掲示板における本文の部分は、文字列の長さを無制限にするのが妥当だと思います。 しかし、mysqlのマニュアル(http://dev.mysql.com/doc/mysql/ja/BLOB.html)によると、一番大きい型であるLONGBLOB型の記憶容量は 2^32バイトとなっており、それを超える文字列は切り捨てられるとなっています。 そこで、ご教授いただきたいです。 長さ無制限の文字列をmysqlに格納する方法はありますか?そしてその場合はどうすればよいですか? それとも、長さ無制限の文字列をmysqlに格納する方法ははなく、その場合は別ファイルを用意し、そちらに書き込むなどをする必要がありますか? どうぞよろしくお願いします。

    • ベストアンサー
    • MySQL
  • 文字列を格納する配列を、動的なメモリ確保で処理したい

    文字数が一定でない文字列の一覧を、配列に格納したいと思っています。 "AAA" "BBBBB" "CC" このような文字列を配列に格納するのに普通にやるなら char test[3][24]; for(i=0;i<3;i++){ strcpy(test[i],file[i]); } (便宜上、file[0]には、"AAA",file[1]には"BBBBB"が格納されてるとします) こうやると、test[3][24]の24バイトとか余計に確保した分が無駄になるので、 必要な文字列の長さだけ配列を確保したいと考えています。 で、 char *test[3]; for(i=0;i<3;i++){ //sizeには、各文字列のサイズが格納してあります。ここではその部分省略しますが test[i]= (char*)malloc(size); strcpy(test[i],file[i]); } とやれば (イメージで) test[0]= "AAA" test[1]= "BBBBB" test[2]= "CC" となると思ったのですが、うまく処理されませんでした。 このような処理をさせたい場合根本的に違うのでしょうか。 わかりにくい説明ですが、どなたかご存知の方よろしくお願いします

  • ストリング文字列をDocumentオブジェクトに格納したい

    文字列として受け取ったxmlをDocumentオブジェクトに格納したいと考えて DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(ファイルパス); とすればファイルを取得してDocumentオブジェクトに入れることはできたのですが、ファイルパスではなくString文字列としてxmlを受け取った場合、どのようにすればDocumentオブジェクトに格納できるのかわかりません。 どのようにすればよろしいのでしょうか?

    • ベストアンサー
    • Java