前段時間寫了一篇關于調用阿里大于的短信接口來開發(fā)例會短信群發(fā)通知功能的文章,其中的例會時間是需求中的重中之重,它需要滿足“格式化”,“易輸入”這兩點,對短信費用關心的開發(fā)者要知道長短信是兩條短信費用之和,因此,例會時間不能隨意交給用戶自定義輸入;要考慮到“易輸入”這點,只能選擇日期選擇控件來輔助用戶輸入,由于日期選擇控件較為小巧使用,在頁面中引入并不是難事。在本篇文章中,使用的是bootstrap的datetimepicker控件,如今bootstrap廣泛使用,加之項目里用的也是bootstrap框架快速搭建界面的,這樣一來選擇這款日期控件也能較省資源,在這里呈上它的效果圖:
這里想分享以下我在引入datetimepicker資源時遇到的一個問題解決方法,這里你需要引入bootstrap-datetimepicker.css和bootstrap-datetimepicker.js,但是引入資源前,你需要在asp.net mvc 中的BundleConfig.cs稍作改變,要說明的是,這個日期控件依賴jquery.js和bootstrap.js,這些資源引用有時要考慮有先后順序,應該先引用jquery.js再bootstrap.js便是bootstrap-datetimepicker.js。如果遇到控件點擊無反應,可以使用火狐瀏覽器在控制臺查看頁面遇到的錯誤。
在引用完資源后,這里對html結構不再說。要知道的在下載的控件zip壓縮包里,有示例html,這很方便進行操作。現(xiàn)在解決了易輸入的需求,再之是格式化,好在這個日期控件得到的日期時間已經(jīng)是規(guī)范化的,但有一個問題,選擇的時間是英文的,是否需要漢化也是一個考慮的方向。
項目里對時間要求的格式為如:10月04。這里不考慮漢化,在后臺代碼中對字符串處理,得到預期的時間日期。這里可以采用ajax提交選擇的日期。先在在action中做處理:
1
2
3
4
5
6
7
8
9
10
11
|
public ActionResult SmsSendForMeeting(FormCollection Form) { string Operator = Form[ "Operator" ] ; //發(fā)送者 string Department =Form[ "Department" ] ; //部門名稱 string Time = Form[ "Time" ].ToString(); //設定的時間 //對日期進行處理 //日期格式:"18 September 2016 - 08:30 pm" Time = sp.DateParse(Time); //調用日期處理函數(shù) //省略其他無關代碼 return View(); } |
這里用到了DateParse()方法,這是解決日期格式轉換的方法。這里的思路就兩條,一個是將年份和空格去掉,一個便是將英文月份轉換為數(shù)字月份,也就是string的操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
public string DateParse( string Time) { //string Time = "19 January 2016 - 09:00 pm"; Time = Time.Replace( " " , "" ); //去除空格 string day = Time.Substring(0, 2) + "日" ; //取出“日” int c = Time.LastIndexOf( ":" ) - 2; string DetailTime = Time.Substring(c); //具體到小時分鐘 int b = Time.LastIndexOf( "201" ); //這里不是2016 Time = Time.Remove(b); string month = Time.Remove(0, 2); //月份 switch (month) { case "January" : month = "1月" ; break ; case "February" : month = "2月" ; break ; case "March" : month = "3月" ; break ; case "April" : month = "4月" ; break ; case "May" : month = "5月" ; break ; case "June" : month = "6月" ; break ; case "July" : month = "7月" ; break ; case "August" : month = "8月" ; break ; case "September" : month = "9月" ; break ; case "October" : month = "10月" ; break ; case "November" : month = "11月" ; break ; case "December" : month = "12月" ; break ; } string DateTime = month + day + DetailTime; //得到->9月18日08:30pm return DateTime; } |
這里就是用到的switch ()函數(shù)和string操作如substring、replace、indexof、remove等,處理的思路有許多,在這里是從左到右處理字符串。DateParse()函數(shù)最后返回就是需要的10月4日,這樣就滿足了對例會短信日期“格式化”和“易輸入”的需求。如果我思路和方法有誤,懇請各位指正,虛心求教。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/zhouyuangan/p/aspnet_3.html