2021年9月6日 星期一

[Ubuntu]—讓使用者加入Linux遠端桌面

 sudo useradd -d /home/userA -m userA #開新使用者UserA


sudo passwd userA #設密碼


//sudo usermod -aG sudo userA #不用這條


sudo adduser userA tsusers #加入選端桌面群組


su userA #切換使用者


echo xfce4-session >~/.xsession #增加session

[Ubuntu]—加入Google驗證(兩段式驗證)

 1. 安裝google 驗證器

sudo apt-get install libpam-google-authenticator


#接下來視窗放到最大,準備掃描視窗的QrCode,

2.google-authenticator

#掃描視窗的QrCode,輸入手機驗證碼,接下來一律按Y,如果無法掃描,可以手動輸入螢幕上驗證碼手動加入


2.文字模式登入(如果3有設定就不用2.1)

2.1 #如果沒有桌面登入才要貼這個

sudo vim /etc/pam.d/sshd

#貼上  auth required pam_google_authenticator.so


2.2 sudo vim /etc/ssh/sshd_config

# 調整 ChallengeResponseAuthentication yes 


sudo service ssh restart


3.桌面模式登入

sudo vim /etc/pam.d/common-auth

#最後一行,貼上

auth required pam_google_authenticator.so

2012年3月13日 星期二

達成每一組資料中間就一個分隔行的SQL語法


要達成這樣很簡單

SELECT a.Custom_Fill_mID AS '序號',a.QuestName AS '報名表名稱',b.CulomnName AS '報名表欄位',CONVERT(NVARCHAR,c.DataValue) AS '欄位值'  FROM
  Custom_Fill_m AS a INNER JOIN
  Custom_Fill_d  AS b ON a.Custom_Fill_mID=b.Custom_Fill_mID INNER JOIN
 Data_d               AS c ON b.Custom_Fill_dID=c.Custom_Fill_dID
 GROUP BY a.Custom_Fill_mID ,a.QuestName,b.CulomnName,CONVERT(NVARCHAR,c.DataValue)
 UNION
 SELECT a.Custom_Fill_mID,NULL,NULL,NULL FROM
 Custom_Fill_m AS a INNER JOIN
  Custom_Fill_d  AS b ON a.Custom_Fill_mID=b.Custom_Fill_mID INNER JOIN
 Data_d               AS c ON b.Custom_Fill_dID=c.Custom_Fill_dID
 GROUP BY a.Custom_Fill_mID ,a.QuestName,b.CulomnName,CONVERT(NVARCHAR,c.DataValue)

這樣就好了

2011年11月23日 星期三

asp.net 匯出 Excel檔案 (*.xls)

設定方法如這裡(轉載)

http://www.dotblogs.com.tw/finalevil/archive/2008/09/28/5517.aspx

製造方法
   '''
    ''' 製造Excel函數
    '''

    ''' 第幾個資料表
    ''' 內容
    ''' 名稱
    ''' 結束? 
    ''' 成功回傳True ,失敗回傳False
    '''
    Public Function GenerateExcel(ByVal contain_DT As System.Data.DataTable, ByVal strSheetName As String, ByVal intNumber As Integer, ByVal bolEnd As Boolean)
        If contain_DT.Rows.Count = 0 Then
            'Return False
        End If
        '
        '
        'xlApp.Visible = False
        Dim intColumn, intRowCount As Integer
        Dim Ii, Jj As Integer
        Dim strColumn As String
        'Dim strPath As String

        'strPath = PUB_LIB.QueryFirstRec("SELECT Remark FROM Config_m WHERE [con_kind]='EXCEL' ")

        intColumn = contain_DT.Columns.Count
        intRowCount = contain_DT.Rows.Count '- 1
        'xlApp.Visible = True
        '增加一個資料,是『資料比數:XX筆』這樣
        contain_DT.Rows.Add()
        contain_DT.Rows(contain_DT.Rows.Count - 1).Item(0) = "資料筆數:"
        contain_DT.Rows(contain_DT.Rows.Count - 1).Item(1) = intRowCount & "筆"
        Select Case contain_DT.Columns.Count
            Case 1
                strColumn = "A"
            Case 2
                strColumn = "B"
            Case 3
                strColumn = "C"
            Case 4
                strColumn = "D"
            Case 5
                strColumn = "E"
            Case 6
                strColumn = "F"
            Case 7
                strColumn = "G"
            Case 8
                strColumn = "H"
            Case 9
                strColumn = "I"
            Case 10
                strColumn = "J"
            Case 11
                strColumn = "K"
            Case 12
                strColumn = "L"
            Case 13
                strColumn = "M"
            Case 14
                strColumn = "N"
            Case 15
                strColumn = "O"
            Case 16
                strColumn = "P"
            Case 17
                strColumn = "Q"
            Case 18
                strColumn = "R"
            Case 19
                strColumn = "S"
            Case 20
                strColumn = "T"
            Case 21
                strColumn = "U"
            Case 22
                strColumn = "V"
            Case 23
                strColumn = "W"
            Case 24
                strColumn = "X"
            Case 25
                strColumn = "Y"
            Case 26
                strColumn = "Z"
            Case 27
                strColumn = "AA"
            Case 28
                strColumn = "AB"
            Case 29
                strColumn = "AC"
            Case 30
                strColumn = "AD"
            Case 31
                strColumn = "AE"
            Case 32
                strColumn = "AF"
            Case Else
                Return False
        End Select
        'Get the current locale, for later use
        Dim current_culture_info As System.Globalization.CultureInfo = _
        System.Threading.Thread.CurrentThread.CurrentCulture
        'Set locale to English-US
        System.Threading.Thread.CurrentThread.CurrentCulture = _
        New System.Globalization.CultureInfo("ZH-TW")
        '
        'Mainpulate the excel elements
        If xlBook.Worksheets.Count < intNumber Then
            xlBook.Worksheets.Add()
            intNumber = 1
        End If
        Dim ExlSheet As Excel.Worksheet '= xlBook.NewSheet
        ExlSheet = CType(xlBook.Worksheets(intNumber), Excel.Worksheet)
        ExlSheet.Name = strSheetName
        '改變值
        'xlBook.Sheets(1).cells(1, 1) = strTitle
        'xlBook.Sheets(1).cells(1, 1).Font.Size = 16
        'xlBook.Sheets(1).cells(1, 1).Font.Bold = True
        'xlBook.Sheets(1).Range("A1", strColumn & "1").Merge()
        'xlBook.Sheets(1).cells(1, 1).HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter
        For Ii = 1 To contain_DT.Columns.Count
            ExlSheet.Cells(1, Ii) = "'" & contain_DT.Columns(Ii - 1).ColumnName
            'xlBook.Sheets(1).cells(2, Ii).Columns.AutoFit()
            ExlSheet.Cells(1, Ii).Font.Size = 12
            ExlSheet.Cells(1, Ii).Font.Color = RGB(255, 255, 255)
            ExlSheet.Cells(1, Ii).Font.Bold = True
            'ExlSheet.Cells(1, Ii).BorderAround(1, XlBorderWeight.xlThin, 3)
            ExlSheet.Cells(1, Ii).Interior.Color = RGB(79, 148, 205)
        Next
        'xlBook.Sheets(1).Range("A2", "E2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous
        'xlBook.Sheets(1).Range("A2", "E2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).Color = Color.Blue.ToArgb
        'xlBook.Sheets(1).Range("A2", "E2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous
        'xlBook.Sheets(1).Range("A2", "E2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom).Color = Color.Blue.ToArgb
        'xlBook.Sheets(xlBook.Sheets.Count - 1).Range("A2", strColumn & "2").Interior.ColorIndex = 5
        For Ii = 0 To contain_DT.Rows.Count - 1
        
            For Jj = 0 To contain_DT.Columns.Count - 1
                ExlSheet.Cells(Ii + 2, Jj + 1) = "'" & contain_DT.Rows(Ii).Item(Jj).ToString
                'xlBook.Sheets(1).cells(Ii + 1 + 2, Jj + 1).Columns.AutoFit()
                'ExlSheet.Cells(Ii + 2, Jj + 1).BorderAround(1, XlBorderWeight.xlThin, 3)
                'xlBook.Sheets(1).cells(Ii + 1 + 2, Jj + 1).Border.style.color = Color.Red.ToArgb
                'xlBook.Sheets(1).cells(Ii + 1 + 2, Jj + 1).Borders(Microsoft.Office.Interop.Excel.XlBarShape.xlBox).Color = Color.Blue.ToArgb
                If (Ii Mod 2) = 0 Then
                    ExlSheet.Cells(Ii + 2, Jj + 1).Interior.Color = RGB(255, 255, 224)
                End If
            Next
        Next

        ExlSheet.Columns.AutoFit()
        'xlBook.Sheets(1).Range("A2", "A2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous
        'xlBook.Sheets(1).Range("A2", "A2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).Color = Color.Blue.ToArgb
        'xlBook.Sheets(1).Range("E2", "E2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous
        'xlBook.Sheets(1).Range("E2", "E2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight).Color = Color.Blue.ToArgb

        'xlBook.Sheets(1).cells(2, 2) = 555
        ''改變顏色
        'xlBook.Sheets(1).Range("A1", "D1").Interior.ColorIndex = 4
        ''框線
        'xlBook.Sheets(1).Range("A2", "D2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous
        'xlBook.Sheets(1).Range("A2", "D2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).Color = Color.Blue.ToArgb
        'xlBook.Sheets(1).Range("A2", "D2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous
        'xlBook.Sheets(1).Range("A2", "D2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom).Color = Color.Blue.ToArgb
        'xlBook.Sheets(1).Range("A2", "A2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous
        'xlBook.Sheets(1).Range("A2", "A2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).Color = Color.Blue.ToArgb
        'xlBook.Sheets(1).Range("D2", "D2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous
        'xlBook.Sheets(1).Range("D2", "D2").Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight).Color = Color.Blue.ToArgb
        ''合併
        'xlBook.Sheets(1).cells(3, 1) = "合併"
        'xlBook.Sheets(1).Range("A3", "D3").Merge()
        ''置中
        '
        ''改變字體
        'xlBook.Sheets(1).cells(3, 1).Font.Size = 16
        ''粗體
        ''改變字的顏色
        'xlBook.Sheets(1).cells(3, 1).Font.Color = Color.Red.ToArgb
        'xlBook.Save()
        'Set the locale back to what it used to be

        System.Threading.Thread.CurrentThread.CurrentCulture = _
        current_culture_info
        'xlBook.Sheets.Add(ExlSheet)
        'xlApp.PageSetup.Orientation = XlPageOrientation.xlLandscape
        'xlBook.PageSetup.Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape

        xlApp.Visible = False
        If bolEnd Then
            Try
                If My.Computer.FileSystem.FileExists(AppSettings("tempFileFolder") & ddlDate.SelectedValue & ".xls") Then
                    My.Computer.FileSystem.DeleteFile(AppSettings("tempFileFolder") & ddlDate.SelectedValue & ".xls")
                End If
                xlApp.Workbooks(1).SaveAs(AppSettings("tempFileFolder") & ddlDate.SelectedValue & ".xls" _
                , Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel5)
                xlBook.Close()
            Catch ex As Exception
                clsPulic.ShowAlertMessage(Me.Page, ex.Message)
            End Try
            xlApp.Workbooks.Close()
            xlApp.Quit()
        End If

        Return True
    End Function


下載方法

  Private Sub DownLoadFile(ByVal parFilePath As String)
        '將虛擬路徑轉換成實體路徑
        Dim strFilePath As String = AppSettings("tempFileFolder") ' Server.MapPath(parFilePath)
        If strFilePath.Split("\").Length <> 0 Then
            Dim FileName As String = parFilePath.Split("/")(parFilePath.Split("/").Length - 1)
            '中文檔名作轉換
            FileName = HttpUtility.UrlEncode(FileName, Encoding.UTF8)
            Dim fr As FileStream = New FileStream(strFilePath & FileName, FileMode.Open)
            Dim buf(fr.Length) As Byte '= New Byte()
            fr.Read(buf, 0, Convert.ToInt32(fr.Length))
            fr.Close()
            fr.Dispose()
            Response.Clear()
            Response.ClearHeaders()
            Response.Buffer = True
            '轉換文字檔編碼格式用,但本次輸出無文字檔,故註解此段
            'Response.ContentEncoding =
            Response.AddHeader("content-disposition", "attachment; filename=" & FileName)
            Response.BinaryWrite(buf)
            Response.End()
        End If
    End Sub

2011年9月19日 星期一

JavaScript 呼叫 .net寫的 WebService

這篇是更進階的

原始的jsp 呼叫 .net寫的WebService請看這裡
http://savagevb.blogspot.com/2011/09/jsp-net-webservice.html

這裡則是不靠任何jsp內建的語法寫成

原文參這篇,這裡簡單說明

首先下載 JavaScriptSOAPClient_src.zip

解壓縮後,裡面有個 soapclient.js檔案

把他放在網頁同一個目錄

接下來一樣我呼叫 TestHello這個 Function

JavaScript 程式寫著

"<" script type="text/javascript" src="soapclient.js" ">" "<" /script ">"
"<" script language="JavaScript" ">"


function loadService() {
HelloTo();
}
function HelloTo()
{
var pl = new SOAPClientParameters();
pl.add("strName", " Randy");
SOAPClient.invoke("http://172.17.102.209:81/Service1.asmx", "TestHello", pl, true, HelloTo_callBack);
}
function HelloTo_callBack(r)
{
alert(r);
}
"<" /script ">"


這樣就可以了

存檔後執行一遍


 看來是沒問題,不過要注意安全姓的問題

用這個方法WebService 位置會曝光

檢視原始碼


看到了吧,JavaScript把位置都乖乖的講出來了

如果有封Port的話,就更不妙了

方法大家自己決定吧 ^^

2011年9月16日 星期五

把輸出日期變成英文格式

在大企業上班,常常碰到輸出的email需要用英文表示,偏偏公司用中文版的OS,輸出的就是

『九月』,如何把『九月』變成『Sep』
 Date.Now.ToString("MMM", System.Globalization.CultureInfo.GetCultureInfoByIetfLanguageTag("en"))

en可以至換成各國代碼,代碼表在這裡

文化特性名稱
文化特性識別項
語言 - 國家/地區
"" (空字串)
0x007F
不變文化特性 (Invariant Culture)
af
0x0036
南非荷蘭文
af-ZA
0x0436
南非荷蘭文 - 南非
sq
0x001C
阿爾巴尼亞文
sq-AL
0x041C
阿爾巴尼亞文 - 阿爾巴尼亞
ar
0x0001
阿拉伯文
ar-DZ
0x1401
阿拉伯文 - 阿爾及利亞
ar-BH
0x3C01
阿拉伯文 - 巴林
ar-EG
0x0C01
阿拉伯文 - 埃及
ar-IQ
0x0801
阿拉伯文 - 伊拉克
ar-JO
0x2C01
阿拉伯文 - 約旦
ar-KW
0x3401
阿拉伯文 - 科威特
ar-LB
0x3001
阿拉伯文 - 黎巴嫩
ar-LY
0x1001
阿拉伯文 - 利比亞
ar-MA
0x1801
阿拉伯文 - 摩洛哥
ar-OM
0x2001
阿拉伯文 - 阿曼
ar-QA
0x4001
阿拉伯文 - 卡達
ar-SA
0x0401
阿拉伯文 - 沙烏地阿拉伯
ar-SY
0x2801
阿拉伯文 - 敘利亞
ar-TN
0x1C01
阿拉伯文 - 突尼西亞
ar-AE
0x3801
阿拉伯文 - 阿拉伯聯合大公國
ar-YE
0x2401
阿拉伯文 - 葉門
hy
0x002B
亞美尼亞文
hy-AM
0x042B
亞美尼亞文 - 亞美尼亞
az
0x002C
阿澤里文
az-AZ-Cyrl
0x082C
阿澤里文 (斯拉夫) - 亞塞拜然
az-AZ-Latn
0x042C
阿澤里文 (拉丁) - 亞塞拜然
eu
0x002D
巴斯克文
eu-ES
0x042D
巴斯克文 - 巴斯克
be
0x0023
白俄羅斯文
be-BY
0x0423
白俄羅斯文 - 白俄羅斯
bg
0x0002
保加利亞文
bg-BG
0x0402
保加利亞文 - 保加利亞
ca
0x0003
卡達隆尼亞文
ca-ES
0x0403
卡達隆尼亞文 - 西屬卡達隆尼亞
zh-HK
0x0C04
中文 - 香港特別行政區
zh-MO
0x1404
中文 - 澳門特別行政區
zh-CN
0x0804
中文 - 中國
zh-CHS
0x0004
中文 (簡體)
zh-SG
0x1004
中文 - 新加坡
zh-TW
0x0404
中文 - 台灣
zh-CHT
0x7C04
中文 (繁體)
hr
0x001A
克羅埃西亞文
hr-HR
0x041A
克羅埃西亞文 - 克羅埃西亞
cs
0x0005
捷克文
cs-CZ
0x0405
捷克文 - 捷克共和國
da
0x0006
丹麥文
da-DK
0x0406
丹麥文 - 丹麥
div
0x0065
迪維西文
div-MV
0x0465
迪維西文 - 馬爾地夫
nl
0x0013
荷蘭文
nl-BE
0x0813
荷蘭文 - 比利時
nl-NL
0x0413
荷蘭文 - 荷蘭
en
0x0009
英文
en-AU
0x0C09
英文 - 澳大利亞
en-BZ
0x2809
英文 - 貝里斯
en-CA
0x1009
英文 - 加拿大
en-CB
0x2409
英文 - 加勒比海
en-IE
0x1809
英文 - 愛爾蘭
en-JM
0x2009
英文 - 牙買加
en-NZ
0x1409
英文 - 紐西蘭
en-PH
0x3409
英文 - 菲律賓
en-ZA
0x1C09
英文 - 南非
en-TT
0x2C09
英文 - 千里達及托巴哥
en-GB
0x0809
英文 - 英國
en-US
0x0409
英文 - 美國
en-ZW
0x3009
英文 - 辛巴威
et
0x0025
愛沙尼亞文
et-EE
0x0425
愛沙尼亞文 - 愛沙尼亞
fo
0x0038
法羅文
fo-FO
0x0438
法羅文 - 法羅群島
fa
0x0029
波斯文
fa-IR
0x0429
波斯文 - 伊朗
fi
0x000B
芬蘭文
fi-FI
0x040B
芬蘭文 - 芬蘭
fr
0x000C
法文
fr-BE
0x080C
法文 - 比利時
fr-CA
0x0C0C
法文 - 加拿大
fr-FR
0x040C
法文 - 法國
fr-LU
0x140C
法文 - 盧森堡
fr-MC
0x180C
法文 - 摩納哥
fr-CH
0x100C
法文 - 瑞士
gl
0x0056
加里斯亞文
gl-ES
0x0456
加里斯亞文 - 西屬加里斯亞
ka
0x0037
喬治亞文
ka-GE
0x0437
喬治亞文 - 喬治亞
de
0x0007
德文
de-AT
0x0C07
德文 - 奧地利
de-DE
0x0407
德文 - 德國
de-LI
0x1407
德文 - 列支敦斯登
de-LU
0x1007
德文 - 盧森堡
de-CH
0x0807
德文 - 瑞士
el
0x0008
希臘文
el-GR
0x0408
希臘文 - 希臘
gu
0x0047
古吉拉特文
gu-IN
0x0447
古吉拉特文 - 印度
he
0x000D
希伯來文
he-IL
0x040D
希伯來文 - 以色列
hi
0x0039
印度文
hi-IN
0x0439
印度文 - 印度
hu
0x000E
匈牙利文
hu-HU
0x040E
匈牙利文 - 匈牙利
is
0x000F
冰島文
is-IS
0x040F
冰島文 - 冰島
id
0x0021
印尼文
id-ID
0x0421
印尼文 - 印尼
it
0x0010
義大利文
it-IT
0x0410
義大利文 - 義大利
it-CH
0x0810
義大利文 - 瑞士
ja
0x0011
日文
ja-JP
0x0411
日文 - 日本
kn
0x004B
坎那達文
kn-IN
0x044B
坎那達文 - 印度
kk
0x003F
哈薩克文
kk-KZ
0x043F
哈薩克文 - 哈薩克
kok
0x0057
貢根文
kok-IN
0x0457
貢根文 - 印度
ko
0x0012
韓文
ko-KR
0x0412
韓文 - 韓國
ky
0x0040
吉爾吉斯文
ky-KG
0x0440
吉爾吉斯文 - 吉爾吉斯
lv
0x0026
拉脫維亞文
lv-LV
0x0426
拉脫維亞文 - 拉脫維亞
lt
0x0027
立陶宛文
lt-LT
0x0427
立陶宛文 - 立陶宛
mk
0x002F
馬其頓文
mk-MK
0x042F
馬其頓文 - 馬其頓共和國
ms
0x003E
馬來文
ms-BN
0x083E
馬來文 - 汶萊
ms-MY
0x043E
馬來文 - 馬來西亞
mr
0x004E
馬拉提文
mr-IN
0x044E
馬拉提文 - 印度
mn
0x0050
蒙古文
mn-MN
0x0450
蒙古文 - 蒙古

0x0014
挪威文
nb-NO
0x0414
挪威文 (巴克摩) - 挪威
nn-NO
0x0814
挪威文 (耐諾斯克) - 挪威
pl
0x0015
波蘭文
pl-PL
0x0415
波蘭文 - 波蘭
pt
0x0016
葡萄牙文
pt-BR
0x0416
葡萄牙文 - 巴西
pt-PT
0x0816
葡萄牙文 - 葡萄牙
pa
0x0046
旁遮普語
pa-IN
0x0446
旁遮普語 - 印度
ro
0x0018
羅馬尼亞文
ro-RO
0x0418
羅馬尼亞文 - 羅馬尼亞
ru
0x0019
俄文
ru-RU
0x0419
俄文 - 俄羅斯
sa
0x004F
梵文
sa-IN
0x044F
梵文 - 印度
sr-SP-Cyrl
0x0C1A
塞爾維亞文 (斯拉夫) - 塞爾維亞
sr-SP-Latn
0x081A
塞爾維亞文 (拉丁) - 塞爾維亞
sk
0x001B
斯洛伐克文
sk-SK
0x041B
斯洛伐克文 - 斯洛伐克
sl
0x0024
斯洛維尼亞文
sl-SI
0x0424
斯洛維尼亞文 - 斯洛維尼亞
es
0x000A
西班牙文
es-AR
0x2C0A
西班牙文 - 阿根廷
es-BO
0x400A
西班牙文 - 玻利維亞
es-CL
0x340A
西班牙文 - 智利
es-CO
0x240A
西班牙文 - 哥倫比亞
es-CR
0x140A
西班牙文 - 哥斯大黎加
es-DO
0x1C0A
西班牙文 - 多明尼加
es-EC
0x300A
西班牙文 - 厄瓜多
es-SV
0x440A
西班牙文 - 薩爾瓦多
es-GT
0x100A
西班牙文 - 瓜地馬拉
es-HN
0x480A
西班牙文 - 宏都拉斯
es-MX
0x080A
西班牙文 - 墨西哥
es-NI
0x4C0A
西班牙文 - 尼加拉瓜
es-PA
0x180A
西班牙文 - 巴拿馬
es-PY
0x3C0A
西班牙文 - 巴拉圭
es-PE
0x280A
西班牙文 - 祕魯
es-PR
0x500A
西班牙文 - 波多黎各
es-ES
0x0C0A
西班牙文 - 西班牙
es-UY
0x380A
西班牙文 - 烏拉圭
es-VE
0x200A
西班牙文 - 委內瑞拉
sw
0x0041
史瓦西里文
sw-KE
0x0441
史瓦西里文 - 肯亞
sv
0x001D
瑞典文
sv-FI
0x081D
瑞典文 - 芬蘭
sv-SE
0x041D
瑞典文 - 瑞典
syr
0x005A
敘利亞文
syr-SY
0x045A
敘利亞文 - 敘利亞
ta
0x0049
坦米爾文
ta-IN
0x0449
坦米爾文 - 印度
tt
0x0044
韃靼文
tt-RU
0x0444
韃靼文 - 俄羅斯
te
0x004A
特拉古文
te-IN
0x044A
特拉古文 - 印度
th
0x001E
泰文
th-TH
0x041E
泰文 - 泰國
tr
0x001F
土耳其文
tr-TR
0x041F
土耳其文 - 土耳其
uk
0x0022
烏克蘭文
uk-UA
0x0422
烏克蘭文 - 烏克蘭
ur
0x0020
烏都文
ur-PK
0x0420
烏都文 - 巴基斯坦
uz
0x0043
烏茲別克文
uz-UZ-Cyrl
0x0843
烏茲別克文 (斯拉夫) - 烏茲別克
uz-UZ-Latn
0x0443
烏茲別克文 (拉丁) - 烏茲別克
vi
0x002A
越南文
vi-VN
0x042A
越南文 - 越南

http://msdn.microsoft.com/zh-tw/library/system.globalization.cultureinfo(v=vs.80).aspx#Y12636

2011年9月15日 星期四

vb.net 格式化日期成為書寫格式

轉載這篇
http://www.dotnetperls.com/datetime-format-vbnet

The DateTime type can be formatted with a string pattern in the VB.NET language. Conceptually, this is simple, but in practice there are some details you must account for if you want a functional program. As shown in this article, formatting your DateTime as a string is straightforward with an understanding of the syntax.

Example 1

As we begin, please notice how the current DateTime is acquired through the DateTime.Now property; when you execute these code examples, the current DateTime will be different. In this example, a format string beginning with MMM (for the month) is used. Look at how the pattern matches up to the output of the program.
Program that uses format string with DateTime [VB.NET]

Module Module1
Sub Main()
' Use current time.
' ... Use a format.
' ... Write to console.
Dim time As DateTime = DateTime.Now
Dim format As String = "MMM ddd d HH:mm yyyy"
Console.WriteLine(time.ToString(format))
End Sub
End Module

Output

May Tue 18 16:46 2010

Description of format

MMM Three-letter month.
ddd Three-letter day of the week.
d Day of the month.
HH Two-digit hours on 24-hour scale.
mm Two-digit minutes.
yyyy Four-digit year.
Example 2

It is possible to change the pattern used in the formatting string in many different ways. To explore this, we try to shorten the output by changing the MMM to a single M, along with several other similar changes. Again, notice how the pattern matches up to the output of the program. Further, the description of the formatting string is shown in tabular format.
Another program that uses format string [VB.NET]

Module Module1
Sub Main()
' Use current time.
' ... Use a format.
' ... Write to console.
Dim time As DateTime = DateTime.Now
Dim format As String = "M d HH:mm yy"
Console.WriteLine(time.ToString(format))
End Sub
End Module

Output

5 18 16:46 10

Description of format

M One-digit month number.
d One-digit day of the month.
HH Two-digit hours on 24-hour scale.
mm Two-digit minutes.
yy Two-digit year.
One-character format strings

Another feature of the DateTime formatting mechanism in VB.NET, which is accessible through the ToString function, is the single-character format string. For this feature, you pass a one-character string to the ToString function; this encodes a specific formatting style. Sometimes, it might be worth memorizing the ones you like the most, but in other cases you can simply look up the table on the Internet or MSDN.
Program that uses one-character formats [VB.NET]

Module Module1
Sub Main()
' Acquire current time and then try format strings.
Dim now As DateTime = DateTime.Now
Console.WriteLine(now.ToString("d"))
Console.WriteLine(now.ToString("D"))
Console.WriteLine(now.ToString("f"))
Console.WriteLine(now.ToString("F"))
Console.WriteLine(now.ToString("g"))
Console.WriteLine(now.ToString("G"))
Console.WriteLine(now.ToString("m"))
Console.WriteLine(now.ToString("M"))
Console.WriteLine(now.ToString("o"))
Console.WriteLine(now.ToString("O"))
Console.WriteLine(now.ToString("s"))
Console.WriteLine(now.ToString("t"))
Console.WriteLine(now.ToString("T"))
Console.WriteLine(now.ToString("u"))
Console.WriteLine(now.ToString("U"))
Console.WriteLine(now.ToString("y"))
Console.WriteLine(now.ToString("Y"))
End Sub
End Module

Output

5/18/2010
Tuesday, May 18, 2010
Tuesday, May 18, 2010 4:47 PM
Tuesday, May 18, 2010 4:47:55 PM
5/18/2010 4:47 PM
5/18/2010 4:47:55 PM
May 18
May 18
2010-05-18T16:47:55.9620000-06:00
2010-05-18T16:47:55.9620000-06:00
2010-05-18T16:47:55
4:47 PM
4:47:55 PM
2010-05-18 16:47:55Z
Tuesday, May 18, 2010 10:47:55 PM
May, 2010
May, 2010
Helper string functions

There are also several helper functions available on a DateTime instance that allow you to format a string in a specific way. For rapid application development, these are ideal because they are easy to remember and guess. Notice how the methods with the word Long in them produce considerably more verbose output.
Program that uses DateTime string functions [VB.NET]

Module Module1
Sub Main()
' Use string helper functions.
Dim now As DateTime = DateTime.Now
Console.WriteLine(now.ToLongDateString())
Console.WriteLine(now.ToLongTimeString())
Console.WriteLine(now.ToShortDateString())
Console.WriteLine(now.ToShortTimeString())
Console.WriteLine(now.ToString())
End Sub
End Module

Output

Tuesday, May 18, 2010
4:49:57 PM
5/18/2010
4:49 PM
5/18/2010 4:49:57 PM
Short day strings

The .NET Framework gives you the ability to print the representation of a day in short form. The three-letter form used simply takes a substring of the day in English and truncates it to three characters. In this example, we look at a loop construct that loops through seven days and prints out the short form string for each of them.
Program that prints short day strings [VB.NET]

Module Module1
Sub Main()
' Current time.
Dim now As DateTime = DateTime.Now

' Print out all the days.
For index As Integer = 0 To 6
Console.WriteLine(now.ToString("ddd"))
now = now.AddDays(1)
Next
End Sub
End Module

Output

Tue
Wed
Thu
Fri
Sat
Sun
Mon
Long day strings

You can also print out the long day strings using the format string dddd. For more textually-oriented output, the longer day string might seem more professional and authoritative. In this example, we loop over seven consecutive days and print out the long day strings.
Program that prints long day strings [VB.NET]

Module Module1
Sub Main()
Dim now As DateTime = DateTime.Now
For index As Integer = 0 To 6
Console.WriteLine(now.ToString("dddd"))
now = now.AddDays(1)
Next
End Sub
End Module

Output

Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Monday
AM and PM strings

When you are using a 12-hour based time system, you will typically want to display AM or PM to indicate whether it is morning or evening. This example prints out AM and PM for two times that are twelve hours apart, demonstrating the syntax and correctness of this format string.
Program that prints AM and PM [VB.NET]

Module Module1
Sub Main()
Dim now As DateTime = DateTime.Now
For index As Integer = 0 To 1
Console.WriteLine(now.ToString("tt "))
now = now.AddHours(12)
Next
End Sub
End Module

Output

PM
AM
Year strings

The year part of the format string is also very important. Typically, you will want a two or four digit year, but a one-digit year is also possible with a single y. To exemplify this format character, we look at some output in an example program that tests yy and yyyy.
Program that prints year strings [VB.NET]

Module Module1
Sub Main()
' Use the best y patterns.
Dim now As DateTime = DateTime.Now
Console.WriteLine(now.ToString("yy"))
Console.WriteLine(now.ToString("yyyy"))
End Sub
End Module

Output

10
2010