goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

日付などの0埋めあれこれ

2013-10-31 16:24:08 | JavaとWeb
日付が、たとえば2013年5月6日のような場合、

20130506

という風に月、日の前に0を埋める。
このようなときの注意点あれこれ




■【日付のみ】Datepickerは日付、フォーマットチェックしない。

DatePickerのdateformatを指定しても、
かならずしも、そのフォーマットで受け取れるとは限らない。

DatePickerが出ているのに、そのDatePickerをまったく無視して、
入力欄に不正の文字をいれてしまうと、その入力を受け取ってしまう。

例えば、

http://jqueryui.com/datepicker/

のview sourceで出てくるソースを以下のように修正し、

<!doctype html>
<html>
<head>
  <title>jQuery UI Datepicker</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />
  <script>
  $(function() {
    $( "#datepicker" ).datepicker({
	dateFormat: "yy/mm/dd"
    });
  });
function getdate()
{
	val = $( "#datepicker" ).val();
	alert(val);
}
  </script>
</head>
<body>
 
<p>Date: <input type="text" id="datepicker" /></p>
<BUTTON onclick="getdate()">日付</BUTTON>
 
 
</body>
</html>


でたらめな日付を入れて、

「日付」ボタンをクリックすると

ちゃんと値が取れる=入ってしまっている。

つまり、Datepickerは入力支援をしてくれるだけであり、
入力値の保証は無いみたいに見える。




■if文で10以下なら0をつける場合

比較するとき、完璧に数字で比較しているならいいんだけど、
文字で"10"と比較してしまうと、
6は、10より「小さい」数字だけど、
6は、10より「大きい」文字なので(6と1を比較するので、6のほうが大きい)
となり、大小関係がおかしくなる。
たとえば、

<!doctype html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
function chk()
{
val = $( "#id1" ).val();
if ( val > 10 )
{
alert(val+"は10より大きい数");
}
else
{
alert(val+"は10よりちいさい数");
}
if ( val > "10" )
{
alert(val+"は10より大きい文字");
}
else
{
alert(val+"は10よりちいさい文字");
}
}
</script>
</head>
<body>
<p><input type="text" id="id1" name="id1" /></p>
<BUTTON onclick="chk()">チェック</BUTTON>
</body>
</html>

で、6とか入れてみると判る。

このように数字と文字を10,"10"と明示してある場合には
間違えないが、これを変数に入れてしまったりしたときに、
気がつかないことがありえる。




■キレイな0うめ

ここで、キレイな0埋めの例を見たので、メモメモ。


【JavaScript】ゼロパディング(ゼロ埋め)
http://www.ore-memo.com/447.html


val = 9; // 9にち
val = ("00"+ val).slice(-2);

0埋めしたい最大数分0をたし、桁数分-で値を入れる。
今回は2桁なので、00と-2

こうすると、1234のように、もともと幅が長い場合は34のように
下2桁が切られるが、ちゃんと2桁になる。

サンプル

<!doctype html>
<HTML>
<head>
<script>
function zero2(val)
{
return ("00"+val).slice(-2);
}
</script>
<body>
<Button onclick="alert(zero2(12))">12</BUTTON><BR>
<Button onclick="alert(zero2('2'))">2</BUTTON><BR>
<Button onclick="alert(zero2(''))"></BUTTON><BR>
<Button onclick="alert(zero2(1234))">1234</BUTTON><BR>
http://www.ore-memo.com/447.html
</body>
</html>



この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 1つの画面で複数の文字コー... | トップ | 14歳少女、Facebookで誕生日... »
最新の画像もっと見る

JavaとWeb」カテゴリの最新記事