整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          java將html轉為pdf


          html轉為pdf的組件有很多,但是還沒有哪一款能達到這個效果,其只要原因是wkhtmltopdf使用webkit網頁渲染引擎開發的用來將 html轉成 pdf的工具,可以跟多種腳本語言進行集成來轉換文檔。但是就使用簡便性來說還是itext等組件占據優勢,如果你要轉換格式有比較高的要求,那么wkhtmltopdf絕對是不二之選!

          下載路徑

          官網地址 wkhtmltopdf.org/

          github地址 github.com/wkhtmltopdf…

          使用方法

          1. windows直接使用:只要在windows命令行中輸入c:\wkhtmltopdf.exe my.oschina.net/papio/blog/… c:\blog.pdf 就可以把這篇文章轉成pdf,并保存到C盤根目錄。
          2. java調用:java中調用wkhtmltopdf的命令Runtime.getRuntime().exec("c:\wkhtmltopdf.exe my.oschina.net/papio/blog/… c:\blog.pdf")就可以實現轉換。

          java調用demo

          public class HtmlToPdfInterceptor extends Thread { private InputStream is; public HtmlToPdfInterceptor(InputStream is){ this.is = is; } public void run(){ try{ InputStreamReader isr = new InputStreamReader(is, "utf-8"); BufferedReader br = new BufferedReader(isr); String line = null; while ((line = br.readLine()) != null) { System.out.println(line.toString()); //輸出內容 } }catch (IOException e){ e.printStackTrace(); } }}public class HtmlToPdf { //wkhtmltopdf在系統中的路徑 private static final String toPdfTool = "D:\wkhtmltopdf\bin\wkhtmltopdf.exe"; /** * html轉pdf * @param srcPath html路徑,可以是硬盤上的路徑,也可以是網絡路徑 * @param destPath pdf保存路徑 * @return 轉換成功返回true */ public static boolean convert(String srcPath, String destPath){ File file = new File(destPath); File parent = file.getParentFile(); //如果pdf保存路徑不存在,則創建路徑 if(!parent.exists()){ parent.mkdirs(); } StringBuilder cmd = new StringBuilder(); cmd.append(toPdfTool); cmd.append(" "); cmd.append(" --header-line");//頁眉下面的線 cmd.append(" --header-center 這里是頁眉這里是頁眉這里是頁眉這里是頁眉 ");//頁眉中間內容 //cmd.append(" --margin-top 30mm ");//設置頁面上邊距 (default 10mm) cmd.append(" --header-spacing 10 ");//(設置頁眉和內容的距離,默認0) cmd.append(srcPath); cmd.append(" "); cmd.append(destPath); boolean result = true; try{ Process proc = Runtime.getRuntime().exec(cmd.toString()); HtmlToPdfInterceptor error = new HtmlToPdfInterceptor(proc.getErrorStream()); HtmlToPdfInterceptor output = new HtmlToPdfInterceptor(proc.getInputStream()); error.start(); output.start(); proc.waitFor(); }catch(Exception e){ result = false; e.printStackTrace(); } return result; } public static void main(String[] args) { HtmlToPdf.convert("https://my.oschina.net/papio/blog/835645", "d:/wkhtmltopdf.pdf"); }}復制代碼

          wkhtmltopdf 參數詳解

          wkhtmltopdf [OPTIONS]... <input file> [More input files] <output file>常規選項 --allow <path> 允許加載從指定的文件夾中的文件或文件(可重復) --book* 設置一會打印一本書的時候,通常設置的選項 --collate 打印多份副本時整理 --cookie <name> <value> 設置一個額外的cookie(可重復) --cookie-jar <path> 讀取和寫入的Cookie,并在提供的cookie jar文件 --copies <number> 復印打印成pdf文件數(默認為1) --cover* <url> 使用HTML文件作為封面。它會帶頁眉和頁腳的TOC之前插入 --custom-header <name> <value> 設置一個附加的HTTP頭(可重復) --debug-javascript 顯示的javascript調試輸出 --default-header* 添加一個缺省的頭部,與頁面的左邊的名稱,頁面數到右邊,例如: --header-left '[webpage]' --header-right '[page]/[toPage]' --header-line --disable-external-links* 禁止生成鏈接到遠程網頁 --disable-internal-links* 禁止使用本地鏈接 --disable-javascript 禁止讓網頁執行JavaScript --disable-pdf-compression* 禁止在PDF對象使用無損壓縮 --disable-smart-shrinking* 禁止使用WebKit的智能戰略收縮,使像素/ DPI比沒有不變 --disallow-local-file-access 禁止允許轉換的本地文件讀取其他本地文件,除非explecitily允許用 --allow --dpi <dpi> 顯式更改DPI(這對基于X11的系統沒有任何影響) --enable-plugins 啟用已安裝的插件(如Flash --encoding <encoding> 設置默認的文字編碼 --extended-help 顯示更廣泛的幫助,詳細介紹了不常見的命令開關 --forms* 打開HTML表單字段轉換為PDF表單域 --grayscale PDF格式將在灰階產生 --help Display help --htmldoc 輸出程序HTML幫助 --ignore-load-errors 忽略claimes加載過程中已經遇到了一個錯誤頁面 --lowquality 產生低品質的PDF/ PS。有用縮小結果文檔的空間 --manpage 輸出程序手冊頁 --margin-bottom <unitreal> 設置頁面下邊距 (default 10mm) --margin-left <unitreal> 將左邊頁邊距 (default 10mm) --margin-right <unitreal> 設置頁面右邊距 (default 10mm) --margin-top <unitreal> 設置頁面上邊距 (default 10mm) --minimum-font-size <int> 最小字體大小 (default 5) --no-background 不打印背景 --orientation <orientation> 設置方向為橫向或縱向 --page-height <unitreal> 頁面高度 (default unit millimeter) --page-offset* <offset> 設置起始頁碼 (default 1) --page-size <size> 設置紙張大小: A4, Letter, etc. --page-width <unitreal> 頁面寬度 (default unit millimeter) --password <password> HTTP驗證密碼 --post <name> <value> Add an additional post field (repeatable) --post-file <name> <path> Post an aditional file (repeatable) --print-media-type* 使用的打印介質類型,而不是屏幕 --proxy <proxy> 使用代理 --quiet Be less verbose --read-args-from-stdin 讀取標準輸入的命令行參數 --readme 輸出程序自述 --redirect-delay <msec> 等待幾毫秒為JS-重定向(default 200) --replace* <name> <value> 替換名稱,值的頁眉和頁腳(可重復) --stop-slow-scripts 停止運行緩慢的JavaScripts --title <text> 生成的PDF文件的標題(第一個文檔的標題使用,如果沒有指定) --toc* 插入的內容的表中的文件的開頭 --use-xserver* 使用X服務器(一些插件和其他的東西沒有X11可能無法正常工作) --user-style-sheet <url> 指定用戶的樣式表,加載在每一頁中 --username <username> HTTP認證的用戶名 --version 輸出版本信息退出 --zoom <float> 使用這個縮放因子 (default 1) 頁眉和頁腳選項--header-center* <text> (設置在中心位置的頁眉內容) --header-font-name* <name> (default Arial) (設置頁眉的字體名稱)--header-font-size* <size> (設置頁眉的字體大小)--header-html* <url> (添加一個HTML頁眉,后面是網址)--header-left* <text> (左對齊的頁眉文本)--header-line* (顯示一條線在頁眉下)--header-right* <text> (右對齊頁眉文本)--header-spacing* <real> (設置頁眉和內容的距離,默認0)--footer-center* <text> (設置在中心位置的頁腳內容) --footer-font-name* <name> (設置頁腳的字體名稱) --footer-font-size* <size> (設置頁腳的字體大小default 11)--footer-html* <url> (添加一個HTML頁腳,后面是網址)--footer-left* <text> (左對齊的頁腳文本)--footer-line* 顯示一條線在頁腳內容上)--footer-right* <text> (右對齊頁腳文本)--footer-spacing* <real> (設置頁腳和內容的距離)./wkhtmltopdf --footer-right '[page]/[topage]' http://www.baidu.com baidu.pdf./wkhtmltopdf --header-center '報表' --header-line --margin-top 2cm --header-line http://192.168.212.139/oma/ oma.pdf表內容選項中 --toc-depth* <level> Set the depth of the toc (default 3) --toc-disable-back-links* Do not link from section header to toc --toc-disable-links* Do not link from toc to sections --toc-font-name* <name> Set the font used for the toc (default Arial) --toc-header-font-name* <name> The font of the toc header (if unset use --toc-font-name) --toc-header-font-size* <size> The font size of the toc header (default 15) --toc-header-text* <text> The header text of the toc (default Table Of Contents) --toc-l1-font-size* <size> Set the font size on level 1 of the toc (default 12) --toc-l1-indentation* <num> Set indentation on level 1 of the toc (default 0) --toc-l2-font-size* <size> Set the font size on level 2 of the toc (default 10) --toc-l2-indentation* <num> Set indentation on level 2 of the toc (default 20) --toc-l3-font-size* <size> Set the font size on level 3 of the toc (default 8) --toc-l3-indentation* <num> Set indentation on level 3 of the toc (default 40) --toc-l4-font-size* <size> Set the font size on level 4 of the toc (default 6) --toc-l4-indentation* <num> Set indentation on level 4 of the toc (default 60) --toc-l5-font-size* <size> Set the font size on level 5 of the toc (default 4) --toc-l5-indentation* <num> Set indentation on level 5 of the toc (default 80) --toc-l6-font-size* <size> Set the font size on level 6 of the toc (default 2) --toc-l6-indentation* <num> Set indentation on level 6 of the toc (default 100) --toc-l7-font-size* <size> Set the font size on level 7 of the toc (default 0) --toc-l7-indentation* <num> Set indentation on level 7 of the toc (default 120) --toc-no-dots* Do not use dots, in the toc輪廓選項 --dump-outline <file> 轉儲目錄到一個文件 --outline 顯示目錄(文章中h1,h2來定) --outline-depth <level> 設置目錄的深度(默認為4)頁腳和頁眉 * [page] 由當前正在打印的頁的數目代替 * [frompage] 由要打印的第一頁的數量取代 * [topage] 由最后一頁要打印的數量取代 * [webpage] 通過正在打印的頁面的URL替換 * [section] 由當前節的名稱替換 * [subsection] 由當前小節的名稱替換 * [date] 由當前日期系統的本地格式取代 * [time] 由當前時間,系統的本地格式取代
          作者:曹元
          鏈接:https://juejin.im/post/6856547881873047559
          來源:掘金
          著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

          了讓初學 Python 的程序員避免犯同樣的錯誤,以下列出了我學習 Python 時犯的三種錯誤。這些錯誤要么是我長期以來經常犯的,要么是造成了需要幾個小時解決的麻煩。 -- Pete Savage

          本文導航
          • -1、 可變數據類型作為函數定義中的默認參數 …… 07%

          • -2、 可變數據類型作為類變量 …… 35%

          • -3、 可變的分配錯誤 …… 53%

          編譯自: https://opensource.com/article/17/6/3-things-i-did-wrong-learning-python

          作者: Pete Savage

          譯者: polebug

          這些錯誤會造成很麻煩的問題,需要數小時才能解決。

          當你做錯事時,承認錯誤并不是一件容易的事,但是犯錯是任何學習過程中的一部分,無論是學習走路,還是學習一種新的編程語言都是這樣,比如學習 Python。

          為了讓初學 Python 的程序員避免犯同樣的錯誤,以下列出了我學習 Python 時犯的三種錯誤。這些錯誤要么是我長期以來經常犯的,要么是造成了需要幾個小時解決的麻煩。

          年輕的程序員們可要注意了,這些錯誤是會浪費一下午的!

          1、 可變數據類型作為函數定義中的默認參數

          這似乎是對的?你寫了一個小函數,比如,搜索當前頁面上的鏈接,并可選將其附加到另一個提供的列表中。

          def search_for_links(page, add_to=[]):

          new_links = page.search_for_links()

          add_to.extend(new_links)

          return add_to

          從表面看,這像是十分正常的 Python 代碼,事實上它也是,而且是可以運行的。但是,這里有個問題。如果我們給 add_to 參數提供了一個列表,它將按照我們預期的那樣工作。但是,如果我們讓它使用默認值,就會出現一些神奇的事情。

          試試下面的代碼:

          def fn(var1, var2=[]):

          var2.append(var1)

          print var2

          fn(3)

          fn(4)

          fn(5)

          可能你認為我們將看到:

          [3]

          [4]

          [5]

          但實際上,我們看到的卻是:

          [3]

          [3, 4]

          [3, 4, 5]

          為什么呢?如你所見,每次都使用的是同一個列表,輸出為什么會是這樣?在 Python 中,當我們編寫這樣的函數時,這個列表被實例化為函數定義的一部分。當函數運行時,它并不是每次都被實例化。這意味著,這個函數會一直使用完全一樣的列表對象,除非我們提供一個新的對象:

          fn(3, [4])
          [4, 3]

          答案正如我們所想的那樣。要想得到這種結果,正確的方法是:

          def fn(var1, var2=None):

          if not var2:

          var2 = []

          var2.append(var1)

          或是在第一個例子中:

          def search_for_links(page, add_to=None):

          if not add_to:

          add_to = []

          new_links = page.search_for_links()

          add_to.extend(new_links)

          return add_to

          這將在模塊加載的時候移走實例化的內容,以便每次運行函數時都會發生列表實例化。請注意,對于不可變數據類型,比如元組[1]、字符串[2]、整型[3],是不需要考慮這種情況的。這意味著,像下面這樣的代碼是非常可行的:

          def func(message="my message"):

          print message

          2、 可變數據類型作為類變量

          這和上面提到的最后一個錯誤很相像。思考以下代碼:

          class URLCatcher(object):

          urls = []

          def add_url(self, url):

          self.urls.append(url)

          這段代碼看起來非常正常。我們有一個儲存 URL 的對象。當我們調用 add_url 方法時,它會添加一個給定的 URL 到存儲中。看起來非常正確吧?讓我們看看實際是怎樣的:

          a = URLCatcher()

          a.add_url('http://www.google.com')

          b = URLCatcher()

          b.add_url('http://www.bbc.co.hk')

          b.urls:

          ['http://www.google.com', 'http://www.bbc.co.uk']

          a.urls:

          ['http://www.google.com', 'http://www.bbc.co.uk']

          等等,怎么回事?!我們想的不是這樣啊。我們實例化了兩個單獨的對象 a 和 b。把一個 URL 給了 a,另一個給了 b。這兩個對象怎么會都有這兩個 URL 呢?

          這和第一個錯例是同樣的問題。創建類定義時,URL 列表將被實例化。該類所有的實例使用相同的列表。在有些時候這種情況是有用的,但大多數時候你并不想這樣做。你希望每個對象有一個單獨的儲存。為此,我們修改代碼為:

          class URLCatcher(object):

          def __init__(self):

          self.urls = []

          def add_url(self, url):

          self.urls.append(url)

          現在,當創建對象時,URL 列表被實例化。當我們實例化兩個單獨的對象時,它們將分別使用兩個單獨的列表。

          3、 可變的分配錯誤

          這個問題困擾了我一段時間。讓我們做出一些改變,并使用另一種可變數據類型 - 字典[4]。

          a = {'1': "one", '2': 'two'}

          現在,假設我們想把這個字典用在別的地方,且保持它的初始數據完整。

          b = a

          b['3'] = 'three'

          簡單吧?

          現在,讓我們看看原來那個我們不想改變的字典 a:

          {'1': "one", '2': 'two', '3': 'three'}

          哇等一下,我們再看看 b?

          {'1': "one", '2': 'two', '3': 'three'}

          等等,什么?有點亂……讓我們回想一下,看看其它不可變類型在這種情況下會發生什么,例如一個元組:

          c = (2, 3)

          d = c

          d = (4, 5)

          現在 c 是 (2, 3),而 d 是 (4, 5)。

          這個函數結果如我們所料。那么,在之前的例子中到底發生了什么?當使用可變類型時,其行為有點像 C語言的一個指針。在上面的代碼中,我們令 b = a,我們真正表達的意思是:b 成為 a 的一個引用。它們都指向 Python 內存中的同一個對象。聽起來有些熟悉?那是因為這個問題與先前的相似。其實,這篇文章應該被稱為「可變引發的麻煩」。

          列表也會發生同樣的事嗎?是的。那么我們如何解決呢?這必須非常小心。如果我們真的需要復制一個列表進行處理,我們可以這樣做:

          b = a[:]

          這將遍歷并復制列表中的每個對象的引用,并且把它放在一個新的列表中。但是要注意:如果列表中的每個對象都是可變的,我們將再次獲得它們的引用,而不是完整的副本。

          假設在一張紙上列清單。在原來的例子中相當于,A 某和 B 某正在看著同一張紙。如果有個人修改了這個清單,兩個人都將看到相同的變化。當我們復制引用時,每個人現在有了他們自己的清單。但是,我們假設這個清單包括尋找食物的地方。如果“冰箱”是列表中的第一個,即使它被復制,兩個列表中的條目也都指向同一個冰箱。所以,如果冰箱被 A 修改,吃掉了里面的大蛋糕,B 也將看到這個蛋糕的消失。這里沒有簡單的方法解決它。只要你記住它,并編寫代碼的時候,使用不會造成這個問題的方式。

          字典以相同的方式工作,并且你可以通過以下方式創建一個昂貴副本:

          b = a.copy()

          再次說明,這只會創建一個新的字典,指向原來存在的相同的條目。因此,如果我們有兩個相同的列表,并且我們修改字典 a 的一個鍵指向的可變對象,那么在字典 b 中也將看到這些變化。

          可變數據類型的麻煩也是它們強大的地方。以上都不是實際中的問題;它們是一些要注意防止出現的問題。在第三個項目中使用昂貴復制操作作為解決方案在 99% 的時候是沒有必要的。你的程序或許應該被改改,所以在第一個例子中,這些副本甚至是不需要的。

          編程快樂!在評論中可以隨時提問。


          作者簡介:

          Pete Savage - Peter 是一位充滿激情的開源愛好者,在過去十年里一直在推廣和使用開源產品。他從 Ubuntu 社區開始,在許多不同的領域自愿參與音頻制作領域的研究工作。在職業經歷方面,他起初作為公司的系統管理員,大部分時間在管理和建立數據中心,之后在 Red Hat 擔任 CloudForms 產品的主要測試工程師。


          via: https://opensource.com/article/17/6/3-things-i-did-wrong-learning-python

          作者:Pete Savage[5] 譯者:polebug 校對:wxy

          本文由 LCTT 原創編譯,Linux中國 榮譽推出

          • [1]: 元組 - https://docs.python.org/2/library/functions.html?highlight=tuple#tuple

          • [2]: 字符串 - https://docs.python.org/2/library/string.html

          • [3]: 整型 - https://docs.python.org/2/library/functions.html#int

          • [4]: 字典 - https://docs.python.org/2/library/stdtypes.html?highlight=dict#dict

          • [5]: Pete Savage - https://opensource.com/users/psav

          DateTime t1 = new DateTime(100); 
           DateTime t2 = new DateTime(20); 
           
           if (DateTime.Compare(t1, t2) > 0) Console.WriteLine("t1 > t2"); 
           if (DateTime.Compare(t1, t2) == 0) Console.WriteLine("t1 == t2"); 
           if (DateTime.Compare(t1, t2) < 0) Console.WriteLine("t1 < t2"); 
           
           
           
          1。比較時間大小的實驗
          string st1="12:13";
          string st2="14:14";
          DateTime dt1=Convert.ToDateTime(st1);
          DateTime dt2=Convert.ToDateTime(st2);
          DateTime dt3=DateTime.Now;
          if(DateTime.Compare(dt1,dt2)>0)
          msg.Text=st1+">"+st2;
          else
          msg.Text=st1+"<"+st2;
          msg.Text+="\r\n"+dt1.ToString();
          if(DateTime.Compare(dt1,dt3)>0)
          msg.Text+="\r\n"+st1+">"+dt3.ToString();
          else
          msg.Text+="\r\n"+st1+"<"+dt3.ToString();
          2。計算兩個時間差值的函數,返回時間差的絕對值:
          private string DateDiff(DateTime DateTime1,DateTime DateTime2)
          {
          string dateDiff=null;
          try
          {
          TimeSpan ts1=new TimeSpan(DateTime1.Ticks);
          TimeSpan ts2=new TimeSpan(DateTime2.Ticks);
          TimeSpan ts=ts1.Subtract(ts2).Duration();
          dateDiff=ts.Days.ToString()+"天"
          +ts.Hours.ToString()+"小時"
          +ts.Minutes.ToString()+"分鐘"
          +ts.Seconds.ToString()+"秒";
          }
          catch
          {
          }
          return dateDiff;
          }
          3。實現計算DateTime1-36天=DateTime2的功能
          TimeSpan ts=new TimeSpan(40,0,0,0);
          DateTime dt2=DateTime.Now.Subtract(ts);
          msg.Text=DateTime.Now.ToString()+"-"+ts.Days.ToString()+"天\r\n";
          msg.Text+=dt2.ToString();
           
           
          use "DateTime.Compare" static method
          DateTime.Compare( dt1, dt2 ) > 0 : dt1 > dt2
          DateTime.Compare( dt1, dt2 ) == 0 : dt1 == dt2
          DateTime.Compare( dt1, dt2 ) < 0 : dt1 < dt2
           /// <summary>
           /// 計算兩個日期的時間間隔
           /// </summary>
           /// <param name="DateTime1">第一個日期和時間</param>
           /// <param name="DateTime2">第二個日期和時間</param>
           /// <returns></returns>
           private string DateDiff(DateTime DateTime1, DateTime DateTime2)
           {
           string dateDiff = null;
           
           TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
           TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
           TimeSpan ts = ts1.Subtract(ts2).Duration();
           dateDiff = ts.Days.ToString()+"天"
           + ts.Hours.ToString()+"小時"
           + ts.Minutes.ToString()+"分鐘"
           + ts.Seconds.ToString()+"秒";
           
           return dateDiff;
           } 說明:
          1.DateTime值類型代表了一個從公元0001年1月1日0點0分0秒到公元9999年12月31日23點59分59秒之間的具體日期時刻。因此,你可以用DateTime值類型來描述任何在想象范圍之內的時間。一個DateTime值代表了一個具體的時刻
          2.TimeSpan值包含了許多屬性與方法,用于訪問或處理一個TimeSpan值
          下面的列表涵蓋了其中的一部分:
          Add:與另一個TimeSpan值相加。
          Days:返回用天數計算的TimeSpan值。
          Duration:獲取TimeSpan的絕對值。
          Hours:返回用小時計算的TimeSpan值
          Milliseconds:返回用毫秒計算的TimeSpan值。
          Minutes:返回用分鐘計算的TimeSpan值。
          Negate:返回當前實例的相反數。
          Seconds:返回用秒計算的TimeSpan值。
          Subtract:從中減去另一個TimeSpan值。
          Ticks:返回TimeSpan值的tick數。
          TotalDays:返回TimeSpan值表示的天數。
          TotalHours:返回TimeSpan值表示的小時數。
          TotalMilliseconds:返回TimeSpan值表示的毫秒數。
          TotalMinutes:返回TimeSpan值表示的分鐘數。
          TotalSeconds:返回TimeSpan值表示的秒數。
          ====================================================<BR>int jg=72;//設置一個增加的時間
           DateTime dt=Convert.ToDateTime("2006-4-23 12:22:05");// 設置一個初始化的時間
           DateTime newdt=dt.AddHours(jg);//初始化時間加上增加的時間
           DateTime nowt=DateTime.Now;//現在的時間
           Response.Write("現在時間是:"+nowt+"<br>");
           Response.Write("數據庫時間是:"+dt+"<br>");
           Response.Write("新的時間是:"+newdt+"<br>");
           if(newdt<nowt)//如果相加后的時間大于現在的時間
           {
           Response.Write("可以");
           }
           else//否則
           {
           Response.Write("不行");
           }
          ======================================================
          // 得到某年某月的天數
           public static int GetDaysInMonth(int rYear,int rMonth)
           {
           DateTime dt1 = DateTime.Parse(rYear+"-"+rMonth+"-01");
           DateTime dt2 = dt1.AddMonths(1);
           TimeSpan ts = dt2-dt1;
           return (int)ts.TotalDays;
           }
          //得到星期Text
           public static string GetDayOfWeekHtml(int rDayOfWeek)
           {
           switch(rDayOfWeek)
           {
           case (int)DayOfWeek.Sunday:
           return "<font color=\"#ff0000\">星期日</font>";
           case (int)DayOfWeek.Monday:
           return "<font color=\"#000000\">星期一</font>";
           case (int)DayOfWeek.Tuesday:
           return "<font color=\"#000000\">星期二</font>";
           case (int)DayOfWeek.Wednesday:
           return "<font color=\"#000000\">星期三</font>";
           case (int)DayOfWeek.Thursday:
           return "<font color=\"#000000\">星期四</font>";
           case (int)DayOfWeek.Friday:
           return "<font color=\"#000000\">星期五</font>";
           case (int)DayOfWeek.Saturday:
           return "<font color=\"#008800\">星期六</font>";
           default:
           return "";
           }
           }
          // 得到某年某月的起止日期,格式為0000-00-00
           public static string[] GetBeginEndDate(int rYear,int rMonth)
           {
           string[] arr = new string[2];
           DateTime dt1 = DateTime.Parse(rYear+"-"+rMonth+"-01");
           arr[0] = dt1.ToLongDateString();
           DateTime dt2 = dt1.AddMonths(1).AddDays(-1);
           arr[1] = dt2.ToLongDateString();
           return arr;
           }
          ==========================
          在ASP中日期比較使用:DateDiff( "d", "2006-1-30", now )>0;在C#中使用:TimeSpan
          代碼如下:
          using System;
          using System.Collections;
          public class DatediffClass
          {
          public static void Main()
          {
           DateTime dt1 = DateTime.Parse("2006-04-01");
           DateTime dt2 = DateTime.Parse("2006-05-01");
           TimeSpan ts = dt2.Subtract(dt1);
           Console.WriteLine(ts.TotalDays);
           Console.ReadLine();
          }
          }
          如果是比較大小:DateTime.Compare(t1, t2) > 0
          ===================================
          1、DateTime 數字型
          System.DateTime currentTime=new System.DateTime();
          1.1 取當前年月日時分秒
          currentTime=System.DateTime.Now;
          1.2 取當前年
          int 年=currentTime.Year;
          1.3 取當前月
          int 月=currentTime.Month;
          1.4 取當前日
          int 日=currentTime.Day;
          1.5 取當前時
          int 時=currentTime.Hour;
          1.6 取當前分
          int 分=currentTime.Minute;
          1.7 取當前秒
          int 秒=currentTime.Second;
          1.8 取當前毫秒
          int 毫秒=currentTime.Millisecond;
          (變量可用中文)
          2、Int32.Parse(變量) Int32.Parse("常量")
          字符型轉換 轉為32位數字型
          3、 變量.ToString()
          字符型轉換 轉為字符串
          12345.ToString("n"); //生成 12,345.00
          12345.ToString("C"); //生成 ¥12,345.00
          12345.ToString("e"); //生成 1.234500e+004
          12345.ToString("f4"); //生成 12345.0000
          12345.ToString("x"); //生成 3039 (16進制)
          12345.ToString("p"); //生成 1,234,500.00%
          4、變量.Length 數字型
          取字串長度:
          如: string str="中國";
          int Len = str.Length ; //Len是自定義變量, str是求測的字串的變量名
          5、System.Text.Encoding.Default.GetBytes(變量)
          字碼轉換 轉為比特碼
          如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);
          然后可得到比特長度:
          len = bytStr.Length;
          6、System.Text.StringBuilder("")
          字符串相加,(+號是不是也一樣?)
          如:System.Text.StringBuilder sb = new System.Text.StringBuilder("");
          sb.Append("中華");
          sb.Append("人民");
          sb.Append("共和國");
          7、變量.Substring(參數1,參數2);
          截取字串的一部分,參數1為左起始位數,參數2為截取幾位。
          如:string s1 = str.Substring(0,2);
          8、String user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
          取遠程用戶IP地址
          9、穿過代理服務器取遠程用戶真實IP地址:
          if(Request.ServerVariables["HTTP_VIA"]!=null){
          string user_IP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
          }else{
          string user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
          }
          10、 Session["變量"];
          存取Session值;
          如,賦值: Session["username"]="小布什";
          取值: Object objName=Session["username"];
          String strName=objName.ToString();
          清空: Session.RemoveAll();
          11、String str=Request.QueryString["變量"];
          用超鏈接傳送變量。
          如在任一頁中建超鏈接:<a href=Edit.aspx?fbid=23>點擊</a>
          在Edit.aspx頁中取值:String str=Request.QueryString["fdid"];
          12、DOC對象.CreateElement("新建節點名");
          創建XML文檔新節點
          13、父節點.AppendChild(子節點);
          將新建的子節點加到XML文檔父節點下
          14、 父節點.RemoveChild(節點);
          刪除節點
          15、Response
          Response.Write("字串");
          Response.Write(變量);
          向頁面輸出。
          Response.Redirect("URL地址");
          跳轉到URL指定的頁面
          16、char.IsWhiteSpce(字串變量,位數)——邏輯型
          查指定位置是否空字符;
          如:
          string str="中國 人民";
          Response.Write(char.IsWhiteSpace(str,2)); //結果為:True, 第一個字符是0位,2是第三個字符。
          17、char.IsPunctuation('字符') --邏輯型
          查字符是否是標點符號
          如:Response.Write(char.IsPunctuation('A')); //返回:False
          18、(int)'字符'
          把字符轉為數字,查代碼點,注意是單引號。
          如:
          Response.Write((int)'中'); //結果為中字的代碼:20013
          19、(char)代碼
          把數字轉為字符,查代碼代表的字符。
          如:
          

          主站蜘蛛池模板: 在线中文字幕一区| 视频一区二区精品的福利| 日本欧洲视频一区| 在线观看精品视频一区二区三区| 3d动漫精品啪啪一区二区免费 | 秋霞无码一区二区| 无码国产亚洲日韩国精品视频一区二区三区| 国产精品综合AV一区二区国产馆| 久久精品免费一区二区| 亚州AV综合色区无码一区 | 日本不卡一区二区三区视频| 91一区二区三区四区五区| 国产精品乱码一区二区三| 精品一区二区AV天堂| 另类国产精品一区二区| 国产精品污WWW一区二区三区| 亚洲AV无码一区东京热| 一区在线免费观看| 学生妹亚洲一区二区| 国偷自产一区二区免费视频| 99久久国产精品免费一区二区| 亚洲一区二区电影| 中文字幕国产一区| 国产一区二区久久久| 91精品福利一区二区三区野战| 无码av不卡一区二区三区| 久久精品国内一区二区三区| 国产精品成人99一区无码| 国内国外日产一区二区| 亚洲国产激情在线一区| 亲子乱av一区区三区40岁| 精彩视频一区二区三区| 国产高清精品一区| 中文字幕一区二区三区有限公司 | 视频一区在线播放| 色狠狠一区二区三区香蕉蜜桃| 一区二区三区午夜视频| 四虎成人精品一区二区免费网站 | 日韩一区二区三区射精| 久久精品免费一区二区喷潮| 全国精品一区二区在线观看|