カテゴリー「開発」の3件の記事

June 08, 2007

生年月日から年齢を計算する簡単な計算式

最近知ったんですが、生年月日から年齢を計算する簡単な計算式というのがあるそうです。

(今日の日付-誕生日)/10000の小数点以下切捨て。

PHPで書くとこんな感じです。

echo (int)((20070608 - 19850101)/10000);

※補足1(2007/8/21)
「公の世界では年齢の判断って業務ごとに異なり、誕生日の前日に年齢取得させる業務が多い」とのことを聞きました。くわしくはこちらをご覧ください。alittlethingさん、ご指摘ありがとうございました。

| | Comments (11) | TrackBack (6)

April 05, 2007

^Mを取り除く方法

テキストをviで見ると行末に「^M」と表示されることがあります。これはWindowsとUNIX・Linuxなどの間でファイルのやりとりをしているときに良く起こります。これは双方の改行コードの扱いに由来する問題です。

ちなみに改行コードはWindows(SJIS)のときはCRLF、UNIX・Linux(EUC)のときLR、MAC(JIS)のときCRです。

さて、本題ですが、^Mは余分なCRが原因ですので、それを取り除けば問題は解決します。ここでは4つの方法を記します。

【1.viで除去する方法】
vi の文字列置換を使用して CR を取り除くためのコマンドは

:%s/^M//g

となります。まず「:」を押下しコマンドモードに入り、%s以下を入力しますが、ここで注意は^Mの入力です。これは文字通り「^M」と入力するのではなく「Ctrl+V」「Ctrl+M」と入力します。すなわち「:」「%」「s」「/」「Ctrl+V」「Ctrl+M」「/」「/」「g」[Enter]と入力します。

【2.コマンドラインから除去する方法】
tr -d '\r' < input_filename > output_filename

【3.PHPで除去する方法】
$line=str_replace("\r\n","\n",$line);

【4.Perlで除去する方法】
s/\x0D\x0A|\x0D|\x0A/\n/g;

| | Comments (1) | TrackBack (0)

January 11, 2006

海外ソリューションのローカライズで微妙なbug

現在海外ソリューションをローカライズして日本仕様にするプロジェクトのプロマネをしてますが(最近ではシステム管理から離れてばりばりSIやってます)が、現時法人では正常に動くのに日本では動かないというバグがあり、何故かな~と調べてみると、とても微妙なことが問題でした。

 

例えばjavascriptでこんなコードがあったとします。
if ( date1 <= "05-12-31" ){
  alert("昨年は設定できません。");
  return false;
}

 

これがどうしても動かないんです。date2に何が入っているかを調べたら、日本語OSの場合は日付が"06/01/11"、韓国語OSの場合は日付が"06-01-11"となっていました。国によってスラッシュかハイフンか違うんですね~。

| | Comments (2) | TrackBack (0)