YYYY/MM/DD hh:mm:ss な文字列の長さとか切り出しとか

長さは19文字。

YYYY/MM/DD hh:mm:ss
         1111111111
1234567890123456789

年、月、日、時、分、秒の切り出し。
PHPのsubstrは位置の指定が0始まり。

<?php
// YYYY/MM/DD hh:mm:ss
//           111111111
// 0123456789012345678

$dt   = date('Y/m/d H:i:s');
$yyyy = substr($dt, 0,  4);
$mm   = substr($dt, 5,  2);
$dd   = substr($dt, 8,  2);
$hh   = substr($dt, 11, 2);
$mi   = substr($dt, 14, 2);
$ss   = substr($dt, 17, 2);

echo $dt   . "\n";
echo $yyyy . "\n";
echo $mm   . "\n";
echo $dd   . "\n";
echo $hh   . "\n";
echo $mi   . "\n";
echo $ss   . "\n";

AWKのsubstrは位置の指定が1始まり。

BEGIN{
  dt   = strftime("%Y/%m/%d %H:%M:%S");
  yyyy = substr(dt,1,  4);
  mm   = substr(dt,6,  2);
  dd   = substr(dt,9,  2);
  hh   = substr(dt,12, 2);
  mi   = substr(dt,15, 2);
  ss   = substr(dt,18, 2);
  print dt
  print yyyy;
  print mm;
  print dd; 
  print hh; 
  print mi; 
  print ss; 
}

PostgreSQL の substr も位置の指定が1始まり。

select 
  substr(to_char(current_timestamp,'YYYY/MM/DD HH24:MI:SS'),1,4)  as yyyy
, substr(to_char(current_timestamp,'YYYY/MM/DD HH24:MI:SS'),6,2)  as mm
, substr(to_char(current_timestamp,'YYYY/MM/DD HH24:MI:SS'),9,2)  as dd 
, substr(to_char(current_timestamp,'YYYY/MM/DD HH24:MI:SS'),12,2) as hh
, substr(to_char(current_timestamp,'YYYY/MM/DD HH24:MI:SS'),15,2) as mi
, substr(to_char(current_timestamp,'YYYY/MM/DD HH24:MI:SS'),18,2) as ss
;


Windowsコマンドプロンプト

変数 %date% %time% の値を修飾子で切り出す方法がある。

%hoge:~n,m%

n が開始位置 0 始まり
m が長さ

set YYYY=%date:~0,4%
set MM=%date:~5,2%
set DD=%date:~8,2%
set hh=%time:~0,2%
set mi=%time:~3,2%
set ss=%time:~6,2%


http://www.atmarkit.co.jp/ait/articles/0405/01/news002.html
をよく読む。