ぱぱーっと作ってしまったので、ツメが甘いところがあるかも。
Javaで日付系のメソッドをいろいろ。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimeUtil {
// 年月日
public static final String DATE_FORMAT_1 = "yyyyMMdd";
// 年月日時分
public static final String DATE_FORMAT_2 = "yyyyMMddHHmmss";
// 年月日時分秒ミリ秒
public static final String DATE_FORMAT_3 = "yyyyMMddHHmmssSSS";
// 年/月/日
public static final String DATE_FORMAT_4 = "yyyy/MM/dd";
// 年/月/日 時:分:秒
public static final String DATE_FORMAT_5 = "yyyy/MM/dd HH:mm:ss";
// 年-月-日 時:分:秒
public static final String DATE_FORMAT_6= "yyyy-MM-dd HH:mm:ss";
// 曜日まで
public static final String DATE_FORMAT_7 = "yyyy年MM月dd日 EEE曜日";
// 時分秒
public static final String DATE_FORMAT_8 = "HH:mm:ss";
/**
* システム日時を指定のフォーマットで取得
* @param format 返却値フォーマット
* @return システム日時
*/
public String getSysDate(String format) {
Date sysdate = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(sysdate);
}
/**
* 日時を指定のフォーマットに変換する
* @param date 日時文字列
* @param format 返却値フォーマット
* @return フォーマット後日時
*/
public String formatDate(String srcDate, String format) {
String fmtDate = null;
// 数字以外は除去し、ミリ秒まで0で桁を補正する
String strDate = figure(srcDate);
Date dDate = strToDate(strDate, DATE_FORMAT_3);
if (dDate != null) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
fmtDate = sdf.format(dDate);
}
return fmtDate;
}
/**
* fromからtoの差分を分で算出する
* @param fromDate from
* @param toDate to
* @return fromからtoの差分(分)
*/
public long diffDateMinute(String fromDate, String toDate) {
long diff = diffDateMill(fromDate, toDate);
return diff / (1000 * 60); // ミリ秒から分に計算
}
/**
* fromからtoの差分を秒で算出する
* @param fromDate from
* @param toDate to
* @return fromからtoの差分(秒)
*/
public long diffDateSecond(String fromDate, String toDate) {
long diff = diffDateMill(fromDate, toDate);
return diff / 1000; // ミリ秒から秒に計算
}
/**
* fromからtoの差分をHH:mm:ssで返却する
* @param fromDate from
* @param toDate to
* @return fromからtoの差分(HH:mm:ss)
*/
public String diffDateStr(String fromDate, String toDate) {
long diffSecond = diffDateSecond(fromDate, toDate);
long hour = diffSecond / 60 / 60; // 時
long minute = (diffSecond / 60) % 60; // 分
long second = diffSecond % 60; // 秒
String strDiff = String.format("%02d", hour)
+ ":" + String.format("%02d", minute)
+ ":" + String.format("%02d", second);
return strDiff;
}
/**
* fromからto の日時の差分をミリ秒で算出する
* @param fromDate from
* @param toDate to
* @return fromからtoの差分(ミリ秒)
*/
public long diffDateMill(String fromDate, String toDate) {
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_3);
String sDate1 = figure(fromDate);
String sDate2 = figure(toDate);
Date dDate1 = null;
Date dDate2 = null;
try {
dDate1 = sdf.parse(sDate1);
dDate2 = sdf.parse(sDate2);
} catch(ParseException e) {
System.out.println("日付形式の文字列ではありません");
}
long lDate1 = dDate1.getTime();
long lDate2 = dDate2.getTime();
long diff = lDate2 - lDate1;
return diff;
}
/**
* 時間(h)を加算する
* @param date 日付文字列
* @param addHour 加算時間(h)
* @param format 返却値フォーマット
* @return 計算後時間文字列
*/
public String addHour(String date, int addHour, String format) {
Calendar cal = strToCalendar(date);
cal = addTime(cal, 0, 0, 0, addHour, 0, 0, 0);
SimpleDateFormat sdf = new SimpleDateFormat(format);
String formatDate = sdf.format(cal.getTime());
return formatDate;
}
/**
* 日時に加算する
* @param cal カレンダー
* @param addYear 年
* @param addMonth 月
* @param addDate 日
* @param addHour 時間
* @param addMinute 分
* @param addSecond 秒
* @param addMillisecond ミリ秒
* @return 処理結果
*/
public Calendar addTime(Calendar cal,
int addYear, int addMonth, int addDate,
int addHour, int addMinute, int addSecond,
int addMillisecond) {
cal.add(Calendar.YEAR, addYear); // 年
cal.add(Calendar.MONTH, addMonth); // 月
cal.add(Calendar.DATE, addDate); // 日
cal.add(Calendar.HOUR_OF_DAY, addHour); // 時
cal.add(Calendar.MINUTE, addMinute); // 分
cal.add(Calendar.SECOND, addSecond); // 秒
cal.add(Calendar.MILLISECOND, addMillisecond); // ミリ秒
return cal;
}
/**
* 日付文字列→Calendar
* @param date 日時文字列
* @return Calendar型
*/
public Calendar strToCalendar(String date) {
String strDate = formatDate(date, DATE_FORMAT_6);
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_6);
Date dDate = null;
try {
dDate = new Date(sdf.parse(strDate).getTime());
} catch (ParseException e) {
System.out.println("パースエラー");
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(dDate);
return cal;
}
/**
* 日付文字列をDate型に変換する
* @param date 日付文字列
* @param format フォーマット
* @return Date
*/
public Date strToDate(String date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.setLenient(false);
Date dDate = null;
try {
dDate = sdf.parse(date);
} catch (ParseException e) {
System.out.println("パースエラー");
}
return dDate;
}
/**
* Calendar型 をフォーマットした日付文字列に変換する
* @param cal カレンダー
* @param format フォーマット
* @return 日付文字列
*/
public String calToStr(Calendar cal, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
String formatDate = sdf.format(cal.getTime());
return formatDate;
}
/**
* 数字以外の文字を取り除き、ミリ秒に桁が満たない場合、0埋めする
* @param date 日付文字列
* @return 補完後の日付文字列
*/
public String figure(String date) {
// 数字以外は除去し、ミリ秒まで0で桁を補正する
String regExp = "[^\\d]";
String strDate = date.replaceAll(regExp, "");
strDate = String.format("%-17s", strDate).replace(" ", "0");
return strDate;
}
}


技術系の検索で飛んできて毒親ワードに引き寄せられました。
みすくちゃんの文章好みです。
過去記事を少ししか読んでないんですが、個人的にはケツがその後どうなったのか気になっています。筋トレはもちろん続ければ効果ありと思うんですが、よもやけつが盛り上がるとは考えた事がなかったので…。
そしてコメントがJAVAに書くところではないことでしたね。出社したらコード動かしてみます。
> なつるさん
コメントありがとうございます。
若干おしりっぽいものができたけれど、その後スリーサイズや太もも周りなど一切変化がなく、
筋肉もまったくつかなくて、筋トレは辞めてしまいました。
でも筋トレのストイックさは気に入っていたので、またやろうと思います。
コードにバグがあったら教えてください。