總網頁瀏覽量

2013年5月3日 星期五

Date物件,DateFormat,NumberFormat,RegularExpression

Date相關類別放在
java.util.*;


Date date = new Date();//不給參數是抓程式執行時的時間
sysout(date);
印出Fri May 03 16:27:32 CST 2013

Date date = new Date(long number);
//抓取從19701/1/8:00開始經過number豪秒的日期時間
//如果number等於九億,那麼date就是1998/7/10凌晨十二點


date.getTime();
//回傳自1970/1/1 08:00:00以來的毫秒數



NumberFormat
數字轉換格式
例如:義大利的小數點跟千分位符號跟美國相反
這兩種不同文化數字轉換可以利用NumberFormat


DateFormat
轉換日期格式
美國日期格式轉換成台灣日期格式可以利用這方式




Regular Expression規則運算式
在java以字串表示     "\\s*,\\s*"

運算式撰寫規則先指定希望使用者可以輸入的字元
\s:表示字串可以出現任何空白字元\t\n\f\r
\d:表示字串要出現0~9的數字
再從後面加上指定字元可以出現幾次
{n}:剛好出現n次
*  :指定字元出現0次以上

例子
\\d{4} :零到九的數字要出現四次



import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DateTest {

    public static void main(String[] args) {

    Date date = new Date();
//Date(0)的話取到1970/1/1的日期
//表示經過零秒的意思

    Locale locale = Locale.getDefault();
    //取得JVM當前語言環境資訊並回傳 回傳locale物件

    //System.out.println(date);

    System.out.println(date.getTime());
//取得date記載的時間離1970/1/1經過多少毫秒
    System.out.println(Locale.getDefault());
//取得JVM使用的語言與地區  印出zh_TW

//    System.out.println(locale.getCountry());
//印出TW
//    System.out.println(locale.getDisplayCountry());
//印出台灣
//    System.out.println(locale.getLanguage());
//    System.out.println(locale.getDisplayLanguage());

    
//    NumberFormat nf=NumberFormat.getInstance(locale);
//    nf.setMaximumFractionDigits(6);
//    nf.setMinimumFractionDigits(3);
//    System.out.println(nf.format(Math.PI));
//    System.out.println(nf.format(20));
//        try {
//            Number n = nf.parse("123,456.119");
//            System.out.println(n.doubleValue());
//        } catch (ParseException ex) {
//            Logger.getLogger(DateTest.class.getName()).log(Level.SEVERE, null, ex);
//        }

    
    String ds1= "Sep 30, 2008";
    //得到一筆日期資料 美國格式
    //2008前面要空格,格式要對否則會ParseException
    DateFormat medium=DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US);
    //宣告DateFormat物件  美國日期格式 長度中型寫法Sep 30, 2008    
    try {
            date = medium.parse(ds1);
        } catch (ParseException ex) {
            Logger.getLogger(DateTest.class.getName()).log(Level.SEVERE, null, ex);
        }
    System.out.println(date);
    //印出Tue Sep 30 00:00:00 CST 2008
    
String ds2=    medium.format(date);
//將指定日期格式化回傳字串
//格式化的格式依照DateFormat當初宣告的style
    System.out.println(ds2);
    //印出Sep 30, 2008

//    如果要印台灣style的日期格式
    //另外宣告DateFormat物件
    DateFormat df=DateFormat.getDateInstance();
String ds3=  df.format(date);//date物件格式化回傳字串
    System.out.println(ds3);
    
    }
    }



import java.io.Console;

public class StringRegex {
    public static void main(String[] args) {
  //  String regex ="\\d{4}\\-\\d{1,2}\\-\\d{1,2}";
  //  \d表示0~9的數字
//        String regex ="\\d{4}-abc\\d{1,2}-\\d{1,2}";
      //減號目前測試不加上\\也沒關係
  //意思是減號跟abc一定要出現  
  String regex="";
        
        
        Console c = System.console();
    System.out.println("please input yr burthday(1222-10-11):");
   String birthday="";
    try{
     birthday=c.readLine();
    //使用者從cmd或console軟體輸入文字
   }catch(NullPointerException e){
   
   }
    boolean isValid=birthday.matches(regex);
    //比對文字是否符合regx字串規則運算式的要求
    
    System.out.println("coreect?"+isValid);
    
    
    String book="Java 城市設計,580.0,     呵呵";
    String[] bookInfo= book.split("\\s*,");
    //book字串符合split括號中規則運算式的部分會被當作分隔符號移除
    //  \\s表示任何空白字元(\t\n\f\r之類的就是)  , *表示可以出現零次以上
    //將逗號以及包含逗號前面的空白字元當作分隔符號刪掉並存入字串陣列
    System.out.println("Infomation:");
    for(String s:bookInfo)
        System.out.println(s);
    //呵呵前面的空白字元會印出來
    
    }
}

沒有留言:

張貼留言