2014/04/26

【C#】日付のFrom-Toチェック(大小チェック)を行う

画面に日付項目があったら、ほぼ100%あるチェック処理が「日付のFrom-Toチェック」
前置きはこれくらいにしてさっそく

// DateTime型の日付のFrom-Toチェック
if (date1 < date2)
{
    Console.WriteLine("date1はdate2より古い");
}
else if(date1 == date2)
{
    Console.WriteLine("date1とdate2は同じ");
}
else if(date1 > date2)
{
    Console.WriteLine("date1はdate2より新しい");
}

なんのひねりもなく比較演算子(==, !=, >, >=, <, <=)を使えば良い。

ただ、日付項目を都合よくDateTime型で保持している画面は見たことがない。
全てがString型だ。


ここで問題が発生する。
String型は比較演算子を使えない!!


2014/04/19

シャープ(####)や指数(1.0E+10)になった数値を全て表示する

幅が狭いセルに数値を貼り付けると、シャープ(####)やE(1.0E+1など)となってしまう。

原因は、セル幅が狭いためすべて表示しきれないから。
そのため####やら1.0E+1に置き換えられてしまう。


シングルクォーテーションをつけたり、1列ずつセル幅を修正したりすれば修正したり、「表示形式」を「文字列」にして[F2]→[Enter]を連打は面倒くさい。
とくにフォーマットが決まっていてセル幅が変えられない場合など、殺意しかわかない。

DBダンプや仕訳一覧など、大量にデータがある場合にその作業をすると1日が終わってしまう。



それを1発で全てを表示させる方法を紹介する。



2014/04/13

Twitter Cardsが反映されないときに試した3つの方法

Twitter Cardsとは、ツイートの下に「概要を表示」や「動画、画像の表示」みたいなリンクを出して、そのサイトに行かなくても概要を見たり、動画を再生したりできるサービス。

せっかくブログやっているんだからと、2ヶ月ほど前にTwitter Cards(OGP含む)の設定、申請を行った。


数分で下記のようなメールがきた。

【Your Twitter card is ready!】We've activated the summary card for kuroeveryday.blogspot.com . If you want to use other kinds of Twitter cards (and we know you do), please make another request.
(TwitterCards承認したで!他の種類のカード使うなら、もういっぺん申請してや)


「申請が通るまでかなり時間がかかる」と聞いていたので、これが承認メールだとは思わなかった。
そして、1日経ち、3日経ち、1週間経ち、10日経ち…


反映されない!!




な゛ん゛でだよ゛ぉ゛ぉ゛ぉ゛!!!!



そのとき試したTwitterCardsが反映されるために試した3つの方法を紹介する。


2014/04/06

【C#】いろんな型変換(キャスト)Convert vs Parse vs ToString

プログラミングを行ううえで使う頻度が高いのが型変換(キャスト)。

基本的なキャストには以下のようなものがある。
Convert.ToInt32(object);
int.Parse(string);
object.ToString();
どれも型変換に使うメソッドだが、それぞれ特徴がある。

例えば、ParseやToStringはNullを渡すとエラーになる。
しかし、Convertは0や空白が返ってくる。

そんな特徴を理解しながら使わないと……


今までは以下のようなメソッドを作って型変換時のエラーを回避していた。
private string ConvertToString(object obj)
{
    if (obj == null)
    {
        return  stirng.Empty;
    }
    else
    {
        return obj.ToString();
    }
}

これがConvertを使うを以下のようになる。
Convert.String(object);

とはいってもConvertも万能でなく、String.Emptyを渡して数値型に変換しようとするとエラーになる。