每日期中点时间字符串java.util.Date.,,java.util.Calendar.转变为
Java 到任何日期和时间字符串如果可能的话。 java.util.Calendar. ,, java.util.Date. 转换为类型的示例程序。
转换过程包括格式化一次默认日期/时间字符串,然后 java.util.Calendar. 类型。如果无法进行转换,则会抛出 IllegalArgumentException 异常。
还有java.util.Date. 日历类的 getTime() 方法用于转换为
可转换的日期格式包括
示例程序
int yyyy = Integer.parseInt(strDate.substring(0,4));
int MM = Integer.parseInt(strDate.substring(5,7));
int dd = Integer.parseInt(strDate.substring(8,10));
int HH = cal.get(日历.HOUR_OF_DAY);
int mm = cal.get(日历.分钟);
int ss = cal.get(日历.SECOND);
int SSS = cal.get(日历.MILLISECOND);
cal.clear();
cal.set(yyyy,MM-1,dd);
int len = strDate.length();
开关(长度){
案例10:
休息;
情况 16: // yyyy/MM/dd HH:mm
HH = Integer.parseInt(strDate.substring(11,13));
mm = Integer.parseInt(strDate.substring(14,16));
cal.set(日历.HOUR_OF_DAY,HH);
cal.set(日历.分钟,毫米);
休息;
情况 19: //yyyy/MM/dd HH:mm:ss
HH = Integer.parseInt(strDate.substring(11,13));
mm = Integer.parseInt(strDate.substring(14,16));
ss = Integer.parseInt(strDate.substring(17,19));
cal.set(日历.HOUR_OF_DAY,HH);
cal.set(日历.分钟,毫米);
cal.set(日历.SECOND,ss);
休息;
案例 23: //yyyy/MM/dd HH:mm:ss.SSS
HH = Integer.parseInt(strDate.substring(11,13));
mm = Integer.parseInt(strDate.substring(14,16));
ss = Integer.parseInt(strDate.substring(17,19));
SSS = Integer.parseInt(strDate.substring(20,23));
cal.set(日历.HOUR_OF_DAY,HH);
cal.set(日历.分钟,毫米);
cal.set(日历.SECOND,ss);
cal.set(日历.MILLISECOND,SSS);
休息;
默认 :
抛出新的 IllegalArgumentException(
“参数字符串[“+ strDate +
“] 无法转换为日期字符串”);
}
返回校准;
}
/**
* 各种日期/时间字符串的默认日期/时间格式
转换成 *。
*
* ●默认日期格式如下。
* 仅适用于日期:yyyy/MM/dd
* 对于日期 + 时间:yyyy/MM/dd HH:mm:ss.SSS
*
* @param str 要转换的字符串
* @return 默认日期/时间格式
* @抛出IllegalArgumentException
* 如果日期字符串无法转换
*/
私有静态字符串格式(字符串str){
if (str == null || str.trim().length() < 8) {
抛出新的 IllegalArgumentException(
“参数字符串 [“+ str +
“] 无法转换为日期字符串”);
}
str = str.trim();
字符串 yyyy = null; 字符串 MM = null; 字符串 dd = null;
字符串 HH = null;字符串 mm = null;
字符串 ss = null;字符串 ss = null;
// 如果缺少“-”或“/”
if (str.indexOf(“/”)==-1 && str.indexOf(“-“)==-1) {
if (str.length() == 8) {
yyyy = str.substring(0,4);
MM = str.substring(4,6);
dd = str.substring(6,8);
返回yyyy+”/”+MM+”/”+dd;
}
yyyy = str.substring(0,4);
MM = str.substring(4,6);
dd = str.substring(6,8);
HH = str.substring(9,11);
mm = str.substring(12,14);
ss = str.substring(15,17);
返回 yyyy+”/”+MM+”/”+dd+” “+HH+”:”+mm+”:”+ss;
}
StringTokenizer token = new StringTokenizer(str,”_/-:.”);
StringBuffer 结果 = new StringBuffer();
for(int i = 0; token.hasMoreTokens(); i++) {
字符串 temp = token.nextToken();
开关(一){
case 0:// 年份部分
yyyy = fillString(str, temp, “L”, “20”, 4);
结果.append(yyyy);
休息;
案例 1:// 月份部分
MM = fillString(str, temp, “L”, “0”, 2);
结果.append(“/”+MM);
休息;
案例 2:// 日间时段
dd = fillString(str, temp, “L”, “0”, 2);
结果.append(“/”+dd);
休息;
案例3://时间部分
HH = fillString(str, temp, “L”, “0”, 2);
结果.append(” “+HH);
休息;
案例 4:// 分钟部分
mm = fillString(str, temp, “L”, “0”, 2);
结果.append(“:”+mm);
休息;
案例5://第二部分
ss = fillString(str, temp, “L”, “0”, 2);
结果.append(“:”+ss);
休息;
case 6:// 毫秒部分
SSS = fillString(str, temp, “R”, “0”, 3);
结果.append(“.”+SSS);
休息;
}
}
返回结果.toString();
}
私有静态字符串 fillString(字符串 strDate, 字符串 str,
字符串位置、字符串addStr、
整数长度){
if (str.length() > len) {
抛出新的 IllegalArgumentException(
“参数字符串[“+ strDate +
“] 无法转换为日期字符串”);
}
返回 fillString(str, 位置, len, addStr);
}
/**
* 将要添加的字符串[addStr]添加到字符串[str]中
* 在[位置]处插入,直到[长度]填满。
*
* *即使 [str] 为 null 或空文字,也使用 [addStr]
* 返回插入的结果,直到[len]填满。
* @param str 目标字符串
* @param 位置 在 ⇒ L 或 l 之前插入 在 ⇒ R 或 r 之后插入
* @param len 要补充的位数
* @param addStr 要插入的字符串
* @return 转换后的字符串。
*/
私有静态字符串 fillString(字符串 str, 字符串位置,
国际长度,
字符串 addStr) {
if (addStr == null || addStr.length() == 0) {
抛出新的 IllegalArgumentException
(“要插入的字符串的值无效。addStr=”+addStr);
}
if (str == null) {
字符串=“”;
}
StringBuffer 缓冲区 = new StringBuffer(str);
while (len > buffer.length()) {
if (position.equalsIgnoreCase(“l”)) {
int sum = buffer.length() + addStr.length();
如果(总和>长度){
addStr = addStr.子字符串
(0,addStr.length() – (sum – len));
buffer.insert(0, addStr);
}别的{
buffer.insert(0, addStr);
}
} 别的 {
buffer.append(addStr);
}
}
if (buffer.length() == len) {
返回 buffer.toString();
}
返回 buffer.toString().substring(0, len);
}
执行结果
执行示例
// yyyy-MM-dd 模式
cal = toCalendar(“2007-01-01”);
日期 = cal.getTime();
System.out.println(“[2007-01-01] = '”+日期+”'”);
//yyyyMMdd 模式
cal = toCalendar(“20070101”);
日期 = cal.getTime();
System.out.println(“[20070101] = '”+日期+“'”);
// yy-MM-dd 模式
cal = toCalendar(“07-01-01”);
日期 = cal.getTime();
System.out.println(“[07-01-01] = '”+日期+”'”);
System.out.println(“\n————日期+时间——————————”);
// yyyy/MM/dd HH:mm:ss 的模式
cal = toCalendar(“2007/01/01 12:00:00”);
日期 = cal.getTime();
System.out.println(“[2007/01/01 12:00:00] = '”+日期+”'”);
// yyyyMMdd HH:mm:ss 的模式
cal = toCalendar(“20070101 12:00:00”);
日期 = cal.getTime();
System.out.println(“[20070101 12:00:00] = '”+日期+”'”);
// yyyy/MM/dd HH:mm 的模式
cal = toCalendar(“2007/01/01 12:00”);
日期 = cal.getTime();
System.out.println(“[2007/01/01 12:00] = '”+日期+”'”);
System.out.println(“\n——仅时间—————————”);
// HH:mm:ss 的模式。 *如果只使用时间,请在前面添加日期。
卡尔 = 日历(
new SimpleDateFormat(“yyyy/MM/dd”).format(new Date()) +
” 12:00:00″);
日期 = cal.getTime();
System.out.println(“[12:00:00] = '”+日期+”'”);
}
输出结果
----- 仅限日期 --------------------------- [2007/01/01] = "Mon Jan 01 00:00:00 JST 2007 [2007-01-01] = 'Mon Jan 01 00:00:00 JST 2007' (日本时间 2007 年 1 月 1 日) [20070101] = 'Mon Jan 01 00:00:00 JST 2007' (日本时间 2007 年 1 月 1 日) [07-01-01] = 'Mon Jan 01 00:00:00 JST 2007' (日本时间 2007 年 1 月 1 日) ----- 日期 + 时间 -------------------------- [2007/01/01 12:00:00] = 'Mon Jan 01 12:00:00 JST 2007' [2007/01/01 12:00:00] = 'Mon Jan 01 12:00:00 JST 2007' 日期 + 时间 [2007/01/01 12:00:00] = "Mon Jan 01 12:00:00 JST 2007 [2007/01/01 12:00:00] = "Mon Jan 01 12:00:00 JST 2007 ----- 仅限时间 --------------------------- [12:00:00] = '日本时间 2007 年 6 月 6 日星期三 12:00:00
该示例程序来自 Chat&Messenger 的 "日历和日程安排功能该系统实际用于以下领域。