background img

Bài Viết Mới

Xử lý DateTime trong C# - Phần 1

- DateTime là một struct xử lý ngày tháng rất mạnh mẽ nằm tại
Namesapce: System  
     Assembly:  mscorlib.dll
Và nó có tới 12 Constructor khác nhau đồng nghĩa có 12 cách truyền tham số khởi tạo đối tượng khác nhau. Cho bạn xử lý thời gian mạnh mẽ hơn kết hợp với các hàm và chúng ta sẽ tìm hiểu tiếp theo đây

 

 



Trong phần này chúng ta đi tìm hiểu các phương thức cộng ngày tháng, giờ, phút................... bằng cách cộng thêm Ngày, tháng, năm ....... mới vào  ngày xác định cho trước  để cho ra kết quả mới. Giá trị add mới có thể là âm / dương để lấy về một kết quả  tăng hoặc giảm như mong muốn.
Phương thức Add bao gồm:

- Add: Trả về ngày giờ mới có thể tăng hoặc giảm tùy thuộc vào tham số truyền vào hàm Timespan. Bạn có thể truyền giá trị âm vào TimeSpan để lấy giá trị giảm.
- AddYears: Trả về ngày tháng mới mà giá trị thay đổi là Năm. Bạn có thể nhận một giá trị tăng hoặc giảm tùy vào tham số truyền vào
- AddMonths: Trả về ngày giờ mới mà giá trị thay đổi là Tháng và Năm . . .
- AddDays: Trả về ngày  giờ mới mà giá trị thay đổi là Ngày, Tháng Năm . . .
- AddHours: Trả về ngày giờ mới mà giá trị thay đổi là Giờ, Ngày, Tháng Năm . . .
- AddMinutes: Trả về ngày giờ mới mà giá trị thay đổi là Phút, Giờ, Ngày, Tháng Năm . . .
- AddSeconds: Trả về ngày giờ mới mà giá trị thay đổi là Giây, Phút, Giờ, Ngày, Tháng Năm . . .
- AddMilliseconds: Tương tự như trên và thay đổi tới mức Mili giây . . .
- AddTicks: Trả vể ngày giờ mới và thay đổi tới mức siêu nhỏ (nanoseconds). Tham số truyền vào có giá trị gấp 100 lần nanoseconds
-------------------------------------------------------------------------------------------------------

Kiểu dữ liệu DateTime trong C# sẽ trả về ngày tháng dạng: 09/23/2013 01:00:00 AM

Dưới đây là các ký tự được dùng cho việc quy định hiển thị một phần giá trị của định dạng trên:
- y hiển thị tháng và năm dạng: Septemper 2013
- yy hiển thị 2 số cuối của năm: 13
- yyy hiển hị năm 3 số nếu năm 4 số thì tự chuyển qua: 2013
- yyyy hiển thị năm dạng 4 số: 2013
- M hiển thị tháng dạng chữ cái + ngày dạng số: Septemper 23
- MMM hiển thị tháng dưới dạng 3 chữ cái đầu tiên trong tên tháng: Sep
- MMMM hiển thị tháng dạng chữ cái đầy đủ: Septemper
- d hiển thị ngày tháng năm dạng: 23/09/2013
- dd hiển thị chỉ ngày dạng số: 23
- ddd hiển thị thứ của ngày dạng 3 chữ cái: Mon
- dddd hiển thị thứ của ngày dạng đầy đủ: Monday

- HH hiển thị giờ theo dạng 24h
- mm hiển thị phút dưới dạng 2 số
- ss hiển thị giây dạng 2 số
- tt hiển thị AM/PM  :            01:21:45:AM

- N Hiển thị dấu phẩy cho dãy số. Có thể tùy chỉnh N0, N1, N2 . . .


Tuy nhiên, chúng ta có cách khác ngoài việc dùng các ký tự trong lúc in ra ngày giờ bằng cách sau:
DateTime today= DateTime.Now;
int year = today.Year;
int month = today.Month;
int day = today.Day;
int hour = today.Hour;
int minute = today.Minute;
int second = today.Second;
int millisecond = today.Millisecond;

Các biến ở trên get ra Năm, Tháng, Ngày, Giờ . . . hiện tại của ngày đã cho
long tick = today.Ticks; 

Đối với biến tick mà chúng ta get ra được ở trên nó khác hoàn toàn với các biến trên nó, bởi vì tick này chính là tổng ngày tháng, giờ....tính ra dạng ticks. Cho độ chính xác cao, từ biến này ta có thể in ra các kết quả dạng
// 21,338,580,000,000,000 nanoseconds 
// 2,190,385,800,000,000 ticks 
// 219,333,580.00 seconds 
// 2,555,643.00 minutes 
//...................... hour, day, month, year

----------------------------------------------------------------------------------------------------------------
1. Add Method()
- Trả về ngày mới tăng hoặc giảm tuy vào quy định của giá trị truyền vào trong phương thức TimeSpan.  Times Span ở đây nó sẽ khởi tạo một ngày mới do ta cài đặt và nó có 5 cách sử dụng tức là có 5 cách truyền tham số (Parameter) vào nó.
Sau khi thiết lập ngày giờ cho TimesSpan thì gán vào phương thức Add() để xử lý ra ngày giờ mới. Và Add() chỉ nhận giá trị của TimeSpan. Bạn không thể gán giá DateTime vào nó.

- Ở ví dụ này, chúng ta sẽ truyền vào nó 4 tham số kiểu Int: Ngày, Giờ, Phút, Giây
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DateTimeDemo
{
class Program
{
static void Main(string[] args)
{
var today = DateTime.Now;
var duration = new TimeSpan(0, 0, 0, 0);
DateTime newday = today.Add(duration);

Console.WriteLine("{0}", newday);
/* Out: 9/23/2013 1:31:50:AM */
Console.WriteLine("{0:yyyy}", newday);
/* Out: 2013 */
Console.WriteLine("{0:MMMM}", newday);
/* Out: Septemper */
Console.WriteLine("{0:dd}", newday);
/* Out: 23 */
Console.WriteLine("{0:HH}", newday);
/* Out: 01 */
Console.WriteLine("{0:mm}", newday);
/* Out: 31 */
Console.WriteLine("{0:ss}", newday);
/* Out: 50 */
Console.WriteLine("{0:tt}", newday);
/* Out: AM */
Console.ReadLine();
}
}
}

 

2. AddYears()
- Tham số truyền vào là kiểu int và tất nhiên là có thể âm hoặc dương
DateTime today = DateTime.Now;
DateTime newday = today.AddYears(5);

Console.WriteLine(today);
Console.WriteLine(newday);
/*
* Output:
* today: 9/24/2013
* newday: 9/24/2018
*/

3. AddMonths()
- Tương tự tham số truyền vào là kiểu Int và có thể âm hoặc dương
DateTime today = DateTime.Now;
DateTime newday = today.AddMonths(15);

Console.WriteLine(today);
Console.WriteLine(newday);
/*
* Output:
* today: 9/24/2013
* newday: 12/24/2014
*/

4. AddDays()
- Trả về ngày mới tăng hoặc giảm tùy vào giá trị tham số truyền vào phương thức AddDays() . Giá trị truyền vào là kiểu Double quy định cho số ngày bạn cần Add là bao nhiêu và có thể âm hoặc dương.
DateTime today = DateTime.Now; //Get Date time now on system
DateTime newday = today.AddDays(6); // Adding 6 days from the current date
Console.WriteLine("Today: {0:d}", today);
Console.WriteLine("6 days from today: {0:d}", newday);

/* Output
* Today: 9/23/2013
* 6 days from today: 9/29/2013
*/

5. AddHours()
- Trả về ngày mới tăng hoặc giảm tùy thuộc vào tham số truyền vào phương thức AddHours(). Giá trị truyền vào là kiểu Double   quy định cho số giờ bạn cần Add là bao nhiêu và có thể âm hoặc dương.
DateTime today = DateTime.Now;
DateTime newday = today.AddHours(-4);
Console.WriteLine("{0}",newday);

/* Today: 9/24/2013 2:30: PM
* Output
* newday: 9/24/2013 10:30: AM
*/

6. AddMinutes()
- Tương tự như AddHour. Trả về ngày mới tùy thuộc vào tham số truyền vào hàm AddMinutes(). Giá trị truyền vào là kiểu Double quy định cho số phút bạn Add vào
DateTime today = DateTime.Now;
DateTime newday = today.AddMinutes(60);
Console.WriteLine("{0}",newday);

/* Today: 9/24/2013 2:30: PM
* Output
* newday: 9/24/2013 3:30: PM
*/

7. AddSeconds()
Tương tự, tham số truyền vào là kiểu Double

DateTime today = DateTime.Now;
DateTime newday = today.AddSeconds(3600); // 3600s = 60 minutes
Console.WriteLine("{0}",newday);

/* Today: 9/24/2013 2:30: PM
* Output
* newday: 9/24/2013 3:30: PM
*/

 
8. AddMilliseconds()
Tương tự, tham số truyền vào là kiểu Double
DateTime today = DateTime.Now;
DateTime newday = today.AddMilliseconds(1000); // 1000 Milliseconds = 1 Seconds
Console.WriteLine("{0}", today);
Console.WriteLine("{0}", newday);
/*
* Output
* today: 9/24/2013 2:30:40 PM
* newday: 9/24/2013 3:30:41 PM
*/

9. AddTicks()
Tham số truyền vào là kiểu long 64bit

- Nanosecond là đơn vị thời gian cực nhỏ với:






1 nanosecond = 1.0 x 10-9 Seconds

Trong C# chúng ta sử dụng hàm AddTicks để tính phép công có giá trị thời gian nhỏ cỡ nano nhưng:
1 ticks = 100 nanosecond

Demo 1:


DateTime today = DateTime.Now;
DateTime newday = today.AddTicks(10000000);
/*
* 1 Seconds = 1000.000.000 nanoseconds
* 1 Seconds = 10.000.000 Ticks
* 1 Ticks = 100 nanoseconds
*/
Console.WriteLine("{0}", today);
Console.WriteLine("{0}", newday);
/*
* Output
* today: 9/24/2013 2:30:40 PM
* newday: 9/24/2013 2:30:41 PM
*/

 Demo 2: Ví dụ chuyển ngày tháng cụ thể sang dạng Ticks và sử dụng biến này in ra các dạng khác nhau của ngày tháng
DateTime today = DateTime.Now;
long varTick = today.Ticks;
TimeSpan ts = new TimeSpan(varTick);

Console.WriteLine("Today is: {0:f}",today);
Console.WriteLine(" {0:N0} nanoseconds", varTick * 100);
Console.WriteLine(" {0:N0} ticks", varTick);
Console.WriteLine(" {0:N2} seconds", ts.TotalSeconds);
Console.WriteLine(" {0:N2} minutes", ts.TotalMinutes);
Console.WriteLine(" {0:N0} days, {1} hours, {2} minutes, {3} seconds",
ts.Days, ts.Hours,
ts.Minutes, ts.Seconds);

 





Demo:
To be continued . . .
Nguồn: Tự Học IT Online - http://tuhocit.net

3 nhận xét: Leave Your Comments

  1. Bài viết khá đầy đủ, thank Bravo Hex

    Trả lờiXóa
  2. Xử Lý Datetime Trong C - Phần 1 >>>>> Download Now

    >>>>> Download Full

    Xử Lý Datetime Trong C - Phần 1 >>>>> Download LINK

    >>>>> Download Now

    Xử Lý Datetime Trong C - Phần 1 >>>>> Download Full

    >>>>> Download LINK

    Trả lờiXóa

Xem Nhiều