顯示具有 C# 學習 標籤的文章。 顯示所有文章
顯示具有 C# 學習 標籤的文章。 顯示所有文章

2024年4月2日 星期二

民國年轉換

 民國年轉換


使用DotNet TaiwanCalendar類別轉換民國年,只要簡單的將西元年日期做為參數傳入,即可取得民國年的相關數值,例如,年/月/日…,如下:


System.Globalization.TaiwanCalendar tc = new System.Globalization.TaiwanCalendar();


DateTime d = DateTime.Now;


string salesDate = String.Format(“民國{0}年{1}月{2}日”, tc.GetYear(d), tc.GetMonth(d), tc.GetDayOfMonth(d));


可惜的是,ToString()沒有支援Format參數指定輸出格式,不然就更加方便了,省掉自行組字串的步驟。另外要特別注意的是,指定小於西元1912/01/01的日期,會拋出超出日期範圍的例外,因為年份沒有負數的表示法。


如果不想用上述的方式,在每個輸出的地方都寫日期轉換的程式碼,有沒有更簡單的方式?


有的,可以在程式開始執行時,指定執行序的文化與曆法:


Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-TW");

Thread.CurrentThread.CurrentCulture.DateTimeFormat.Calendar = new TaiwanCalendar();


當使用DateTime.Now.ToString()時,得到的就是民國年日期,而且是整個系統範圍皆適用。


若需要用到台灣陰陽曆(農民曆)處理,也可使用TaiwanLunisolarCalendar類別來做轉換,使用方式相同。

2016年9月8日 星期四

C# 時間運用

最近休閒 - 手機板   game
發現這款遊戲均採用時間緒來處理事件
---

--
我也剛好要練習 C#  , 也就寫了一個簡單的

--
程式碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        int count;
        double ptr;

        public Form1()
        {
            InitializeComponent();
            //timer1.Interval = 100;
            //timer1.Enabled = true;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
         
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            count++;
            label1.Text = count.ToString();
            if (count > Convert.ToInt32(ptr))
            {
                timer1.Enabled = false;
            }
            else
            {
                progressBar1.Value = count;
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Interval = Convert.ToInt16 (textBox1.Text);
            //
            DateTime h1 = DateTime.Now;
            DateTime h2 = DateTime.Now;
            h1 =h1.AddHours(Convert.ToDouble(textBox2.Text.Substring(0, 2)));
            h1=h1.AddMinutes(Convert.ToDouble (textBox2.Text.Substring(3, 2)));
            h1=h1.AddSeconds (Convert.ToDouble(textBox2.Text.Substring(6, 2)));

            TimeSpan h3 = h1.Subtract(h2);
            //ptr = h3.TotalMilliseconds ;
            ptr = h3.TotalSeconds;
                       
            progressBar1.Maximum = Convert.ToInt32(ptr);
           //        
            timer1.Enabled = true;

        }

        private void button2_Click(object sender, EventArgs e)
        {          
            timer1.Enabled = false;
        }
    }
}




各種日期時間計算

各種日期時間計算

//改變日期format

string startStr = start.ToString("yyyy-MM-dd HH:mm:ss");

DateTime dt = Convert.ToDateTime(startStr);//轉回DateTime

P.S format 大小寫意義不同: MM=month, mm=Minutes, HH=24hours, hh=12hours

//日期時間相加減

DateTime start = Convert.ToDateTime("2011-04-25 15:50:39");

DateTime end = Convert.ToDateTime("2011-05-02 15:50:39");

TimeSpan ts = end.subtract(start); //兩時間天數相減

double dayCount = ts.Days; //相距天數

//目前時間

DateTime dt = DateTime.Now;

//本周周一

DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));

//本周周日

DateTime endWeek = startWeek.AddDays(6);

//本月月初

DateTime startMonth = dt.AddDays(1 - dt.Day);

//本月月末

DateTime endMonth = startMonth.AddMonths(1).AddDays(-1);

//本月月末

DateTime endMonth = startMonth.AddDays((dt.AddMonths(1) - dt).Days - 1);

//本季初

DateTime startQuarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day);

//本季末

DateTime endQuarter = startQuarter.AddMonths(3).AddDays(-1);

//本年年初

DateTime startYear = new DateTime(dt.Year, 1, 1);

//本年年末

DateTime endYear = new DateTime(dt.Year, 12, 31);



至于昨天、明天、上周、上月、上季度、上年度等等,只要AddDays()、AddMonths()、AddYears()這幾種方法組合一下就可以了。

C#中datetime的使用

//由于DayOfWeek返回的是數字的星期幾,我們要把它轉成國字方便觀看,有些人可能用switch一一對照,其實不用那麼麻煩

string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };

string week = Day[Convert.ToInt32(DateTime.Now.DayOfWeek.ToString("d"))].ToString();



//上周,同理,一周是7天,上周就是本周再減去7天,下周也是一樣

 //上周一

DateTime.Now.AddDays(Convert.ToInt32 (1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) - 7);      

//上周末(星期日)

DateTime.Now.AddDays(Convert.ToInt32 (1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) - 7).AddDays(6);    

//下周一

DateTime.Now.AddDays(Convert.ToInt32 (1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) + 7);      

//下周末

DateTime.Now.AddDays(Convert.ToInt32(1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) + 7).AddDays(6);    

//本月,很多人都會說本月的第一天肯定是1號,最後一天就是下個月一號再減一天。這當然是對的

//一般的寫法

//第一天

DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1";

//最後一天

DateTime.Parse(DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1").AddMonths(1).AddDays(-1).ToShortDateString();



//巧用C#裡ToString的字串格式化更方便

DateTime.Now.ToString("yyyy-MM-01");

DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1).ToShortDateString();



//上個月,減去一個月份

DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToShortDateString();

DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();

//下個月,加去一個月份

DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).ToShortDateString();

DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(2).AddDays(-1).ToShortDateString();

//7天後

DateTime.Now.Date.ToShortDateString();

DateTime.Now.AddDays(7).ToShortDateString();

//7天前

DateTime.Now.AddDays(-7).ToShortDateString();

DateTime.Now.Date.ToShortDateString();



//本年度,用ToString的字串格式化我們也很容易地算出本年度的第一天和最後一天

DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToShortDateString();

DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToShortDateString();

//上年度,不用再解釋了吧

DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToShortDateString();

DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToShortDateString();

//下年度

DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToShortDateString();

DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(2).AddDays(-1).ToShortDateString();



//本季,我們都知道一年四個季節,一個季節三個月

//首先我們先把日期推到本季度第一個月,然後這月的第一天就是本季的第一天了

DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).AddDays(1 - DateTime.Now.Day);

//同理,本季度的最後一天就是下季的第一天減一

DateTime.Parse(DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();

//下季

DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");

DateTime.Parse(DateTime.Now.AddMonths(6 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();

//上季

DateTime.Now.AddMonths(-3 - ((DateTime.Now.Month - 1) % 3)). AddDays(1 - DateTime.Now);

DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).AddDays(1 - DateTime.Now.Day).AddDays(-1).ToShortDateString();



如:"20100101"轉換成日期型別

"20100101"轉換成int型別

1、DateTime dt=Convert.ToDateTime("20100101".Substring(0,4)+"-"+"20100101".Substring(4,2)+"-"+"20071107".Substring(6,2));

int i=Convert.ToInt32("20100101");

2、Convert.ToDateTime、DateTime.Parse()

3、string str = "20100101";

DateTime dt = DateTime.ParseExact(str, "yyyyMMdd", null);

int i;

int.TryParse(str, out i);

4、定義一個DateTimePicker對象,將需要轉化的字串賦予DateTimePicker的Text屬性,

然後DateTimePicker的Value值就是你需要的日期和時間,Value值還有Minite,Second等屬性,可以取得時,分,秒,豪秒等值.

免費電子書:C# 程式設計

C# 程式設計 - 免費電子書:C# 程式設計
--
裡面有:

基礎篇
C# 簡介
開發環境
變數與運算
流程控制
陣列
函數
物件
例外處理
函式庫篇
檔案處理
資料結構
正規表達式
Thread
應用篇
視窗程式
影音媒體
網路程式
遊戲程式
手機程式
資料庫
雲端運算
特殊功能
委派
擴展方法
序列化

---

看來要進入 Xamarin , 還是要習慣一下 C#  ; 但對於 Xamarin 內的寫法 ..又不是很習慣!
是要雙路併進了...

2012年7月4日 星期三

讀取 args 傳入參數(app 參數命令值)

2012年6月22日 星期五

VBNET 和 C# 比較

以前一直沒時間玩 C# , 經一些 console 小試比較後 ; 真的差很大
底下用一個簡單的例子來表示:
C#:
VBNET:

do break

2012年6月21日 星期四

foreach break

for 印出 a-y char

真是強,一直用 vbnet 都不知道 C# 竟也有此魅力!

switch 相同的 case 處理

switch goto case

switch 真是好用,搭配 goto case ; 進而可以分流處理一些程序和事件! 底下用簡單的範例來看運作方式!

利用 for switch

switch

2012年6月18日 星期一

do while 累加

do while 練習

for if 判斷是否整除(% 餘數)

if and

2012年6月15日 星期五

if bool #4

if 和 for #3