Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URL's added here will be added as <link>s in order, and before the CSS in the editor. If you link to another Pen, it will include the CSS from that Pen. If the preprocessor matches, it will attempt to combine them before processing.

+ add another resource

JavaScript

Babel is required to process package imports. If you need a different preprocessor remove all packages first.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Behavior

Save Automatically?

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                <h1>任意のclass名の要素の生年月日文字列から自動で年齢を計算する</h1>
<p>形式として、西暦・月・日が必要で、以下の例のように月と日は互いに1桁・2桁揃え、各々に1桁と2桁の組み合わせでもいけます。<br>
	半角の数字だけを抜き出しているので区切りはそれ以外なら何でもok。<br>
	西暦は4桁必須。和暦には対応してません。<br>jQuery側の冒頭にあるクラス名の設定は任意に変更可。また末尾の年齢出力部分の記述とcssのクラス名を変えることで任意の出力と加工が可能
</p>

<div class="test">1980/10/7</div>
<div class="test">1990/09/08</div>
<div class="test">2000年8月9日</div>
<div class="test">2010年7月10日</div>
<div class="test">2019/06-11</div>
<div>2019年02月10日</div>

<h2>作成例</h2>
<p>例えばAKB チームBのメンバー表があったとして、こんな感じに使います。<br>各メンバーの誕生日がくれば自動で年齢が変わります<br>jQueryのage部分を参考に新たに判定式を入れれば、今日の日付からメンバーの今年の日付を比較して同じになれば誕生日表示みたいな事も可能です(未導入)</p>

<table class="member">
	<tr>
		<th></th>
		<th>名前</th>
		<th>生年月日</th>
		<th>出身地</th>
		<th>期</th>
	</tr>
	<tr>
		<td><img src="https://48pedia.org/images/thumb/0/08/2018%E5%B9%B4AKB48%E3%83%97%E3%83%AD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB_%E6%9F%8F%E6%9C%A8%E7%94%B1%E7%B4%80.jpg/50px-2018%E5%B9%B4AKB48%E3%83%97%E3%83%AD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB_%E6%9F%8F%E6%9C%A8%E7%94%B1%E7%B4%80.jpg"></td>
		<td><rb>柏木由紀</rb><rt>かしわぎ ゆき</rt></td>
		<td><div class="test">1991年7月15日</div></td>
		<td>鹿児島県</td>
		<td>3期</td>
	</tr>
	<tr>
		<td><img src="https://48pedia.org/images/thumb/5/50/2018%E5%B9%B4AKB48%E3%83%97%E3%83%AD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB_%E4%B9%85%E4%BF%9D%E6%80%9C%E9%9F%B3.jpg/50px-2018%E5%B9%B4AKB48%E3%83%97%E3%83%AD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB_%E4%B9%85%E4%BF%9D%E6%80%9C%E9%9F%B3.jpg"></td>
		<td><rb>久保怜音</rb><rt>くぼ さとね</rt></td>
		<td><div class="test">2003年11月20日</div></td>
		<td>神奈川県</td>
		<td>ドラフト2期</td>
	</tr>
	<tr>
		<td><img src="http://48pedia.org/images/thumb/c/ce/2019%E5%B9%B4AKB48%E3%83%97%E3%83%AD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB_%E4%BD%90%E3%80%85%E6%9C%A8%E5%84%AA%E4%BD%B3%E9%87%8C.jpg/50px-2019%E5%B9%B4AKB48%E3%83%97%E3%83%AD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB_%E4%BD%90%E3%80%85%E6%9C%A8%E5%84%AA%E4%BD%B3%E9%87%8C.jpg"></td>
		<td><rb>佐々木優佳里</rb><rt>ささき ゆかり</rt></td>
		<td><div class="test">1995年8月28日</div></td>
		<td>埼玉県</td>
		<td>12期</td>
	</tr>
	<tr>
		<td><img src="https://48pedia.org/images/thumb/9/92/2018%E5%B9%B4AKB48%E3%83%97%E3%83%AD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB_%E7%A6%8F%E5%B2%A1%E8%81%96%E8%8F%9C.jpg/50px-2018%E5%B9%B4AKB48%E3%83%97%E3%83%AD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB_%E7%A6%8F%E5%B2%A1%E8%81%96%E8%8F%9C.jpg"></td>
		<td><rb>福岡聖菜</rb><rt>ふくおか せいな</rt></td>
		<td><div class="test">2000年8月1日</div></td>
		<td>神奈川県</td>
		<td>15期</td>
	</tr>
</table>

<h2>作成例2</h2>
<p>生年月日の表示は不要で、名前の後すぐに年齢が必要な場合。<br>このサンプルでは.test内に.ageOnlyと言うクラス名を新設して生年月日をspanタグで囲んでます。</p>
<p>これまでと同様に.test内の数字を抜き出して年齢を計算した後で生年月日を消しています。</p>
<p>PCの場合、カーソルを年齢の所に当てれば生年月日が表示されます。</p>
<ul>
	<li class="test">柏木由紀<span class="ageOnly">1991年7月15日</span></li>
	<li class="test">久保怜音<span class="ageOnly">2003/11/20</span></li>
	<li class="test">佐々木優佳里<span class="ageOnly">1995年8月28日</span></li>
	<li class="test">福岡聖菜<span class="ageOnly">2000年8月1日</span></li>
</ul>

<hr>
<ul>
	<li>2019/7/25 高橋朱里卒業に伴い佐々木優佳里に変更</li>
	<li>2019/2/16 jQueryを少しだけ編集。関数化しただけで内用に変化なし</li>
	<li>2019/2/12 作成例2を追加、それに伴いjQuery側年齢の処理を追加</li>
	<li>2019/2/11 作成例追加、年齢の括弧部分・歳をcssに変更</li>
</ul>

<p>参考サイト: <a href="https://qiita.com/clockmaker/items/865ceafae7117606169a" target="_blank">qiita: JavaScriptで生年月日から年齢を計算する簡単ロジック</a></p>
<p>参考サイト: <a href="https://48pedia.org/AKB48%E3%83%A1%E3%83%B3%E3%83%90%E3%83%BC%E4%B8%80%E8%A6%A7" target="_blank">エケペディア AKBメンバー一覧</a></p>
              
            
!

CSS

              
                .age {
	color: #669;
}
.age::before,
.age::after {
	margin-left: 4px;
	margin-right: 4px;
}
.age::before {
	content: "(";
}
.age::after {
	content: "歳 )";
	margin-left: 0px;
}

/*テーブル分*/
.member {
	border: 0;
	border-collapse: collapse;
	font-family: sans-serif;
}
.member tr td{
	padding: 2px 16px;
}
.member tr td:nth-of-type(2) {
	font-size: 20px;
}
.member tr td:nth-of-type(4) {
	text-align: center;
}
.member tr td:nth-of-type(5) {
	text-align: center;
}
.member tr:nth-of-type(even) {
	background-color: #efefef;
}
              
            
!

JS

              
                (function($) {
	//クラス名
	//先頭の.(dot)は不要
	const t = "test";

	const c = $("." + t);
	const today = new Date();
	let birth, txt, b, bd, y, m, d, y1, y2, m1, m2, d1, d2, age;

	const f_birth = (y, m, d) => {
		//要素の生年月日の整形
		bd = new Date(y, m, d);

		y2 = bd
			.getFullYear()
			.toString()
			.padStart(4, "0");
		m2 = (bd.getMonth() + 1).toString().padStart(2, "0");
		d2 = bd
			.getDate()
			.toString()
			.padStart(2, "0");

		//今日の日付の整形
		y1 = today
			.getFullYear()
			.toString()
			.padStart(4, "0");
		m1 = (today.getMonth() + 1).toString().padStart(2, "0");
		d1 = today
			.getDate()
			.toString()
			.padStart(2, "0");

		//現在の日付から生年月日を引いて年齢算出
		age = Math.floor((Number(y1 + m1 + d1) - Number(y2 + m2 + d2)) / 10000);
		return age;
	};

	c.each(function(i) {
		//要素からテキスト抜き出し
		txt = $(this).text();

		//テキストから数字を抜き出し
		b = txt.match(/(\d{1,4})/g);

		birth = {
			year: b[0],
			month: b[1],
			day: b[2]
		};

		const ages = f_birth(birth.year, birth.month - 1, birth.day);

		//console.log(age);

		if (
			$(this)
				.children()
				.hasClass("ageOnly")
		) {
			const bday = $(this)
				.children(".ageOnly")
				.text();
			$(this)
				.children(".ageOnly")
				.empty();
			$(this).append("<span class='age' title='" + bday + "'>" + age + "</span>");
		} else {
			//生年月日の後ろに年齢を出力
			$(this).append("<span class='age'>" + age + "</span>");
		}
	});
})(jQuery);

              
            
!
999px

Console