<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 61,  comments - 2033,  trackbacks - 0

     


    import java.util.Calendar;
    import java.util.*;
    import java.sql.Timestamp;

    public class TimeFormat
    {
      
    private static String[] keywords =
          
    {
          
    "year""month""day""hour""minute""second""millisecond"}
    ;
      
    private String format;
      
    private Calendar whatTime;

      
    public TimeFormat()
      
    {
      }


      
    /**
       *
       * 
    @param format year-month-day hour:minute:second   2005-11-25 22:02
       * 
    @param timeStr
       * 
    @return
       *
       * year年month月day日 hour點(diǎn)minute分second秒
       * 2005年11月25日 22點(diǎn)22分15秒
       * 2005/11/25  22:22
       * 05/11/25 22:22
       
    */

      
    public static Calendar getTime(String format, String timeVarStr)
      
    {
        String timeFormatStr 
    = format;
        Calendar whatTime 
    = null;
        
    int year = 0, month = 0, day = 0, hour = 0, minute = 0,
            second 
    = 0, millisecond = 0;

        String[] validTimeElements 
    =
            
    {
            
    "year""month""day""hour""minute""second""millisecond"}
    ;

        
    int dateVarCount = 0;
        
    int index = -1;

        Vector tmpV 
    = new Vector();

        Map map 
    = new HashMap();

        
    for (int i = 0; i < validTimeElements.length; i++)
        
    {
           
    int pos = format.indexOf(validTimeElements[i]);
           
    if(pos>=0)
           
    {
             map.put(
    new Integer(pos),validTimeElements[i]);
           }

        }


        Object[] tmp 
    = map.keySet().toArray();
        Integer[] tmpInt 
    = new Integer[tmp.length];

        
    for(int i = 0; i<tmpInt.length;i++)
        
    {
          tmpInt[i] 
    = (Integer) tmp[i];
        }


        
    //從小到大排序, 還原原來(lái)的順序.
        Arrays.sort(tmpInt);
        String[] varNames  
    = new String[tmpInt.length];

        
    for(int i=0;i<varNames.length;i++)
        
    {
          varNames[i] 
    = (String) map.get(tmpInt[i]);
        }


        String[] varValue 
    = getTimeInOriginOrder(timeVarStr); //變量值

        
    if(varValue==null)
        
    {
          System.out.println(
    "獲取時(shí)間變量的值出錯(cuò)了.");
          
    return null;
        }


        
    int[] timeElementValue = new int[validTimeElements.length];

        
    for(int i=0;i<varNames.length;i++)
        
    {
          
    for(int j=0;j<validTimeElements.length;j++)
          
    {
            
    if(varNames[i].equals(validTimeElements[j]))
            
    {
              timeElementValue[j] 
    = Integer.parseInt(varValue[i]);
              
    break;
            }

          }

        }


        
    if(format.indexOf("month")>=0 || format.indexOf("day")>=0)
        
    {
          
    if(format.indexOf("year")<0)
          
    {
            System.out.println(
    "沒(méi)有年, 使用當(dāng)前的年為缺省值.");
            timeElementValue[
    0= Calendar.getInstance().get(Calendar.YEAR);
          }


         
    //目前禁止年份是非4位數(shù)字表示的
          String tmpStr = timeElementValue[0]+"";
         
    if(tmpStr.length()<4)
         
    {
            System.out.println(
    "目前禁止年份是非4位數(shù)字表示的,因?yàn)槲覀儫o(wú)法確定到底是哪一年");
            
    return null;
         }



          whatTime 
    =  Calendar.getInstance();
          whatTime.set(timeElementValue[
    0], timeElementValue[1- 1,
                       timeElementValue[
    2], timeElementValue[3], timeElementValue[4],
                       timeElementValue[
    5]);
        }

        
    else
        
    {
          System.out.println(
    "時(shí)間變量獲取失敗,至少必須又2個(gè)時(shí)間變量. year,month,day 必須都有, 可以允許year沒(méi)有使用當(dāng)前年份");
          whatTime 
    = null;
        }

        
    return whatTime;
      }



      
    /**
       * 把時(shí)間變量的值按順序取出,以逗號(hào)隔開(kāi)
       * 
    @param val
       * 
    @return
       
    */

      
    static private String[] getTimeInOriginOrder(String val)
      
    {
        String temp 
    = "";
        String digital 
    = "0123456789";
        
    for (int i = 0; i < val.length(); i++)
        
    {
          
    if (digital.indexOf(val.substring(i, i + 1)) > -1)
          
    {
            temp 
    = temp + val.substring(i, i + 1);
          }

          
    else
          
    {
            
    if (temp.length()>0 && temp.charAt(temp.length()-1)!=',' )
            
    {
              temp 
    = temp + ",";
            }

          }

        }


        System.out.println(temp);
        
    return temp.split(","); //以逗號(hào)隔開(kāi)的數(shù)組.
      }


      
    public Calendar getTime(String timeStr)
      
    {
        
    return getTime(format, timeStr);
      }


      
    /**year, month, day, hour, minute,second, millisecond
          年    月     日    時(shí)   分     秒      毫秒
         這里暫時(shí)假設(shè)年份都是顯示4位數(shù)字,月分和天數(shù)都是顯示不帶前置0的形式,
         如1998年9月3日,就不顯示為98年09月03日,等日后完善。
         如果有顯示年必須指定年要顯示多少位。
         假設(shè)當(dāng)前時(shí)間是:2002-11-15 20:13:55.359
         用戶設(shè)置: year年month月day日hour時(shí)minute分second秒
         輸出:2002年11月15日 20時(shí)13分55秒
         用戶設(shè)置: year年month月day日
         輸出:2002年11月15日
       注意必須用小寫(xiě)的形式,大寫(xiě)的不行,因?yàn)橛脩艨赡茉跁r(shí)間字符串內(nèi)
       也有大小寫(xiě)有區(qū)別的其他單詞.
       *
    */


      
    /**
         如果正確 就返回其出現(xiàn)的位置,如果錯(cuò)誤就返回-1.
       
    */


      
    public static int isTimestampValid(String timeStr, String element)
      
    {
        
    //case1:不包含
        int firstIndex = timeStr.indexOf(element);
        
    if (firstIndex < 0)
        
    {
          
    return firstIndex;
        }


        
    //應(yīng)經(jīng)包含了一次。
        int nextfrom = firstIndex + element.length();

        
    //已經(jīng)到了盡頭, 不用再找了。
        if (nextfrom >= timeStr.length())
        
    {
          
    return firstIndex; //element occurs only once in timeStr.
        }


        
    int secondIndex = timeStr.indexOf(element, nextfrom);
        
    if (secondIndex < 0)
        
    {
          
    return firstIndex; //只出現(xiàn)一次
        }


        
    if (secondIndex > 0//包含2次以上。
        {
          System.out.println(
    "日期的格式設(shè)置有誤!" + element + "" + timeStr +
                             
    "中出現(xiàn)了2次或2次以上,這樣無(wú)法分辨");
        }

        
    return -1;
      }


      
    public static void main(String[] args)
      
    {
        TimeFormat timeFormat1 
    = new TimeFormat();
        Calendar tmp 
    = getTime("year年month月day日""2005年1月5日");

        
    if(tmp!=null)
        
    {
          Timestamp whatTime 
    = new Timestamp(tmp.getTimeInMillis());
          System.out.println(whatTime);
        }

        
    else
        
    {
          System.out.println(
    "error found.");
        }

      }


    }
    posted on 2005-11-28 17:08 魚(yú)上游 閱讀(2708) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): 爪哇世界探險(xiǎn)


    FeedBack:
    # re: 格式化任意的時(shí)間格式
    2005-11-28 22:04 | pikachu
    為什么不用DateFormat ?  回復(fù)  更多評(píng)論
      
    # re: 格式化任意的時(shí)間格式
    2005-11-29 09:33 | 胡子魚(yú)
    DateFormat格式有限,比如: yyyy-mm-dd ,中間只能是相同的“-”,而我這個(gè)任意是指:
    1)中間你可以用 “----”,或者“年年”什么的,只要非數(shù)字的都可以,而且長(zhǎng)度不限。
    2)這里也可以把 年 月 日 時(shí) 分 秒 微秒 的位置任意打亂。

    這個(gè)功能主要是根據(jù)需求做出來(lái)的。  回復(fù)  更多評(píng)論
      
    # re: 格式化任意的時(shí)間格式
    2005-12-15 08:55 | boss_ch
    不幸的說(shuō),上述要求 ,DataFormat 都是可以做到的  回復(fù)  更多評(píng)論
      
    # re: 格式化任意的時(shí)間格式
    2005-12-15 10:07 | 胡子魚(yú)
    樓上的朋友,你真的看清楚需求了嗎?
    SimpleDateFormat有類(lèi)似的,
    但也要經(jīng)過(guò)處理才能用。

    比如,用
    SimpleDateFormat dateFormat = new SimpleDateFormat(strPattern);
    dateFormat.applyPattern(strPattern);
    date = dateFormat.parse(strDate);
    也得先處理一下strDate。
      回復(fù)  更多評(píng)論
      
    <2005年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    常用鏈接

    留言簿(82)

    隨筆分類(lèi)(59)

    文章分類(lèi)(21)

    相冊(cè)

    收藏夾(40)

    GoodSites

    搜索

    •  

    積分與排名

    • 積分 - 1267939
    • 排名 - 22

    最新評(píng)論

    閱讀排行榜

    主站蜘蛛池模板: 日韩免费观看视频| 久久久久久精品免费看SSS| 成人性生活免费视频| 亚洲精品综合久久中文字幕| 久久免费精品视频| 亚洲av无码不卡| 日本免费人成视频在线观看| 亚洲av无码一区二区三区不卡| 视频免费在线观看| 中文字幕中韩乱码亚洲大片| 国产精品亚洲五月天高清| 免费国产在线观看| 日韩在线观看免费| 亚洲一区无码中文字幕 | 亚洲成av人片在线看片| 亚洲婷婷在线视频| 97视频免费在线| 亚洲一区二区三区乱码在线欧洲| 免费看国产成年无码AV片| 亚洲成AV人片在WWW| 免费一级毛片免费播放| 国产裸体美女永久免费无遮挡| 天天影视色香欲综合免费| 亚洲一区二区三区无码国产| 青青青国产免费一夜七次郎| 美女扒开尿口给男人爽免费视频| 中文字幕久久亚洲一区| 鲁大师在线影院免费观看| 最新国产成人亚洲精品影院| 免费播放春色aⅴ视频| 久久免费视频一区| 亚洲欧洲日产韩国在线| 日本高清色本免费现在观看| 国产成人无码精品久久久久免费| 亚洲日本中文字幕区| 午夜成年女人毛片免费观看| 青青操免费在线视频| 久久综合久久综合亚洲| 永久免费AV无码网站在线观看| 日韩在线观看免费| 久久久久亚洲AV片无码下载蜜桃|