タイムスタンプとは何か
ある日の研修
タイムスタンプ(正確にはUNIXタイムスタンプ) を使う機会がありました。
これは「1970年1月1日」UTC時点からの経過秒数(整数型) を示すものだそうです。
恥ずかしながら初めて聞く単語だったので、 まとめておきます。
使用方法
以下ではRubyを用いてタイムスタンプを使用してみます。 現時刻から変換するには以下の通りとなります。
例1 タイムスタンプ使用
print Time.now #出力→2016-09-12 22:58:48 +0900 print "\n" #改行 print Time.now.to_i #出力→1473688728 #1970年1月1日からの経過秒数 print "\n" #改行
上記のTime.nowは Time型 を表しています。 Time型→タイムスタンプの変換は .to_iをつけるだけです。 また、タイムスタンプは 整数型 を表しています。
用途
こんなことやって何か意味あるの??って思う人も いるかもしれません。 少なくとも私は思ってました。
ですが、前述したようにタイムスタンプは整数型なので、 時間帯を比較する際には簡潔にコードを書くことができ、 非常に有効です。
次項では、 「入力した日付が現時刻と比較して過去ではないか検証する」 コードを例に説明を行います。
コード例
例2 現時刻と入力値比較
require 'time' print "予約日を入力して下さい\n例)2016年10月22日\n" enter_time = ((gets.chomp).split(/[年,月,日]/)).join("-") if enter_time if Time.parse(enter_time).to_i >= Time.now.to_i print Time.parse(enter_time).to_i else print "今日の日付より過去です\nもう一度入力して下さい。\n" end end
コードが長くなったので順を追って噛み砕いて説明します。
1行目
require 'time'
→組み込みではないtime ライブラリを 用いることによりありがたーい機能(後述します)が使えます。
2-3行目
print "予約日を入力して下さい\n例)2016年10月22日\n" enter_time = ((gets.chomp).split(/[年,月,日]/)).join("-")
→予約日入力メッセージを出力し、 「2016年10月23日」といった風に入力すると、 「2016-10-23」と変換されるようにしています。
残り
if enter_time #入力を受け取る if Time.parse(enter_time).to_i >= Time.now.to_i #比較 print "予約承りました" else print "今日の日付より過去です\nもう一度入力して下さい。\n" end end
→Time.parseはtimeライブラリの機能です。timeライブラリは
組み込みで入っていないので、require time
をする必要があります。
この機能により、色々な表現(2016-10-22や2016/10/22)
をTime型に変換してくれます。
そしてto_iをつけてやると現時刻との比較が簡単に
行なえますね。
※補足 タイムスタンプ型→Time型への変換はTime.atを使います。
まとめ
タイムスタンプを用いないと例2は場合分けが多くなります。 (私の力では・・・)
一方、例2のコードはスッキリしてますね(^^)
UTF-8とSHIFT-JISの違いとは
はじめに
現在、見習いrubyエンジニアとして働いています。 業務中に詰まったところをアップしていきます!
初日 詰まったところ
Shift-JIS形式でのHTMLファイル作成のタスクを
振られて「??」状態でした・・・
HTMLを作成するときにmetaタグに「utf-8」を つけているな〜位しか認識していなかったので、 Shift-JIS??って感じでした汗
以下では頭の整理のためにUTF-8、Shift-JIS についてまとめていきます!
前提知識① Unicode
まず、本題に入る前に前提知識として Unicodeの話から進めていきます。
Unicodeとはえらーい人が集まって業界標準の 文字コード体系です。
字面だけ聞いても、なんだか「???」状態ですね。 自分なりに咀嚼すると、Unicodeは全世界の人が つかいやすいようにアルファベット、日本語、ハングル語 といった文字集合を扱う統一規格です。
つまり、全世界の人がコンピューターを用いるための 表示文字集合を統一化した訳です。 例えば、日本語のひらがなだったら「あいうえお・・・わをん」 という風に規定したわけです。
キーポイントはUnicodeはあくまでも「表示文字」だけを 規定したという事です。
前提知識② 文字符号化スキーム
但し、表示文字を規定していても、コンピューター がそのまま読める訳ではありません。 そこでどのように文字に落としこむかがポイントになります。
コンピューター→人間が読める文字(Unicode)
へのつなぎを「文字符号化スキーム」と呼びます。
本題 文字符号化スキーム UTF-8
文字符号化スキームはUTF-8、UTF-16、UTF-32 など色々とあるようですが、代表格は「UTF-8」のようです。 HTMLによく出てくるタグ < meta charset="utf-8" > がありますね。
これは 「utf-8形式で書いたから、ブラウザ(コンピュータ)さん、 翻訳よろしくね〜」って事です。
本題2 文字符号化スキーム② SHIFT-JIS
SHIFT-JISは日本語を表示するために 文字符号化スキームの一種です。 但し、対応する文字集合がJIS規格(日本工業規格)という 文字コード集合のために用いられています。
何故に2つの文字集合コードが混在するの???って 困惑しますね。 実はコンピューターが出来た当初、JISのように 各国で独自の文字集合ができていたようです。 で、各国が世界中の文字コード体系を一つにまとめようとして 出来たのがUnicodeとなります。
現在、インターネットで表示する文字符号化スキームは UTF-8形式が多いですが、SHIFT-JISでも表示することが出来ます。
自分でSHIFT-JIS形式で書く際は、 < meta charset="shift_jis" >と書いて、 ブラウザさんにshift-jis形式で読み込みを行うよう 指示する必要があります。