package com.study.test;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 实现Java中日期的简单格式化,支持以下字段:
* yyyy:年
* MM:月
* dd:日
* hh:1~12小时制(1-12)
* HH:24小时制(0-23)
* mm:分
* ss:秒
* S:毫秒
* E:星期几
* a: 上午/下午
*/
public class DateFormatter implements Serializable {
private static Map tokenFieldMap = new HashMap<>();
private static final int NO_LENGTH = 1000; //不用自动补0的属性,例如毫秒
private static final int LOCALE = NO_LENGTH + 1000; //用Locale获取值的属性,例如星期
//tokenFieldMap,将字符与Calendar中的field对应
static {
tokenFieldMap.put('y', Calendar.YEAR);
tokenFieldMap.put('M', Calendar.MONTH);
tokenFieldMap.put('d', Calendar.DATE);
tokenFieldMap.put('h', Calendar.HOUR);
tokenFieldMap.put('H', Calendar.HOUR_OF_DAY);
tokenFieldMap.put('m', Calendar.MINUTE);
tokenFieldMap.put('s', Calendar.SECOND);
tokenFieldMap.put('a', Calendar.AM_PM + LOCALE);
tokenFieldMap.put('S',Calendar.MILLISECOND + NO_LENGTH);
tokenFieldMap.put('E',Calendar.DAY_OF_WEEK + LOCALE);
}
private static class Token implements Serializable {
int field; // Calendar中的field对应
int length; // 自动补0的长度
public Token(int field, int length) {
this.field = field;
this.length = length;
}
}
//解析出的token,可能是token或者是String
private List,>
Original: https://www.cnblogs.com/xcr1234/p/9657042.html
Author:
Title: Java中日期格式化的实现算法
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/620534/
转载文章受原作者版权保护。转载请注明原作者出处!