So Sanh Datetime Trong C# / Top 7 # Xem Nhiều Nhất & Mới Nhất 3/2023 # Top View | Channuoithuy.edu.vn

Xử Lý Datetime Trong C#

Phần này chúng ta tìm hiểu các phương thức so sánh, đối chiếu thời gian trong DateTime. Để lấy về kết quả True/False hoặc một cờ hiệu cụ thể của việc so sánh 2 khoảng thời gian

.

+ Compare: Truyền vào hai giá trị của hai ngày kiểu DateTime, hàm này sẽ so sánh giá trị 1 vs 2 để đưa ra kết quả. Chỉ ba giá trị được trả về: 1, 0, -1 thể hiện ngày thứ nhất lớn hơn, bằng nhau, nhỏ hơn. + CompareTo: Phương thức này có hai cách dùng    – Cách 1 phương thức này được giá trị datetime cụ thể sử dụng để so sánh với giá trị khác.    – Cách 2 phương thức này  được giá trị datetime cụ thể sử dụng để so sánh với đối tượng datetime khác được truyền vào. Cả 2 cách kết quả trả về cũng chỉ có ba giá trị như hàm Compare trên là: 1, 0, -1 + Equals: Trả về một kết quả True/False. Dùng để so sánh giữa hai ngày có bằng nhau không.

Lưu ý !

Phương thức sử dụng static chỉ được gọi thông qua lớp chứa nó và không thể gọi từ một đối tượng cụ thể nào. Bạn có thể tìm hiểu thêm Static keyword

Phương thức sử dụng static chỉ được gọi thông qua lớp chứa nó và không thể gọi từ một đối tượng cụ thể nào. Bạn có thể tìm hiểu thêm Static keyword

1. Compare() – Đây là phương thức static của DateTime. Trả về một giá trị kiểu Int, với 2 tham số truyền vào là hai giá trị datetime.

Demo:

DateTime today

=

DateTime

.

Now

;

// Get date time now this computer

DateTime daysAgo

=

new

DateTime

(

2013

,

09

,

10

)

;

int

result

=

DateTime

.

Compare

(

today

,

daysAgo

)

;

int

result1

=

DateTime

.

Compare

(

today

,

today

)

;

int

result2

=

DateTime

.

Compare

(

daysAgo

,

today

)

;

Console

.

WriteLine

(

result

)

;

// Output: 1

Console

.

WriteLine

(

result1

)

;

// Output: 0

Console

.

WriteLine

(

result2

)

;

// Output: -1

– Bạn có thể dùng các giá trị result để dùng cho các điều kiện, chẳng hạn in ra thông tin ngày nào lớn hơn hoặc bằng nhau …………………..

2. CompareTo()

– Phương thức này trả về kết quả kiểu Int, với 1 tham số truyền vào là giá trị datetime được khởi tạo trước đó hoặc một đối tượng DateTime. Nó chỉ khác với Compare chút xíu, kết quả trả về hoàn toàn như hàm so sánh Compare

Demo 1:  Truyền vào giá trị khởi tạo trước

DateTime today

=

DateTime

.

Now

;

// Get date time this computer

DateTime newday

=

new

DateTime

(

2013

,

8

,

19

)

;

int

result

=

today

.

CompareTo

(

newday

)

;

int

result1

=

today

.

CompareTo

(

today

)

;

int

result2

=

newday

.

CompareTo

(

today

)

;

Console

.

WriteLine

(

result

)

;

// Output: 1

Console

.

WriteLine

(

result1

)

;

// Output: 0

Console

.

WriteLine

(

result2

)

;

// Output: -1

Demo 2: Truyền vào một đối tượng DT mới

DateTime newday

=

new

DateTime

(

2013

,

10

,

24

)

;

int

result

=

newday

.

CompareTo

(

DateTime

.

Now

)

;

Console

.

WriteLine

(

result

)

;

/*

             */

3. Equals() – Trả về kết quả True nếu 2 ngày được so sánh bằng nhau và ngược lại  là False . Ta cần một biến kiểu bool để get lấy giá trị này

Demo 1: Một ngày cụ thể gọi hàm equals, với tham số truyền vào là một ngày khác để so sánh.

DateTime one

=

new

DateTime

(

2013

,

09

,

29

)

;

DateTime two

=

new

DateTime

(

2012

,

05

,

25

)

;

DateTime three

=

two

;

// Compare the DateTime objects and display the results.

bool

result

=

one

.

Equals

(

two

)

;

Console

.

WriteLine

(

"

The result is: {0}.

"

,

result

)

;

//Output: False

result

=

two

.

Equals

(

three

)

;

Console

.

WriteLine

(

"

The result is: {0}.

"

,

result

)

;

//Output: True

Demo 2: Thay vì tham số truyền vào là giá trị thời gian được khởi tạo trước đó như trên, ta có thể truyền một đối tượng mới như sau:

DateTime one

=

new

DateTime

(

2013

,

09

,

29

)

;

bool

result

=

one

.

Equals

(

DateTime

.

Now

)

;

Console

.

WriteLine

(

"

The result is: {0}.

"

,

result

)

;

//Output: False

 Demo 3: Hàm equals() lúc này là hàm static. Và cũng có 2 cách truyền tham số, kiểu thứ nhất truyền vào 2 tham số khởi tạo từ trước, kiểu thứ hai truyền vào 2 đối tượng khởi tạo tại chỗ.

DateTime one

=

new

DateTime

(

2013

,

10

,

10

)

;

DateTime two

=

new

DateTime

(

2013

,

10

,

10

)

;

//True

DateTime time1

=

new

DateTime

(

2013

,

09

,

27

,

15

,

59

,

59

)

;

DateTime time2

=

new

DateTime

(

2013

,

09

,

27

,

15

,

59

,

59

)

;

//True

DateTime dt1

=

new

DateTime

(

DateTime

.

Today

.

Ticks

)

;

DateTime dt2

=

new

DateTime

(

DateTime

.

Today

.

Ticks

)

;

// True

/* newdays1 and newdays2 are equal if their Ticks property values are equal, otherwise false. */

DateTime newdays1

=

new

DateTime

(

DateTime

.

Now

.

Ticks

)

;

DateTime newdays2

=

new

DateTime

(

DateTime

.

Now

.

Ticks

)

;

//True/False

Console

.

WriteLine

(

"

Time now is:

"

+

'n'

+

"

{0}

"

+

'n'

+

"

{1}

"

,

newdays2

,

newdays1

)

;

/* Get ticks values*/

long

tick1

=

newdays1

.

Ticks

;

long

tick2

=

newdays2

.

Ticks

;

Console

.

WriteLine

(

"

Ticks value of TimeNow is:

"

+

'n'

+

"

{0}

"

+

'n'

+

"

{1}

"

,

tick1

,

tick2

)

;

/* Get result from Equals*/

bool

result

=

DateTime

.

Equals

(

one

,

two

)

;

bool

result1

=

DateTime

.

Equals

(

time1

,

time2

)

;

bool

result2

=

DateTime

.

Equals

(

dt1

,

dt2

)

;

bool

result3

=

DateTime

.

Equals

(

newdays1

,

newdays2

)

;

Console

.

WriteLine

(

"

The result is:

"

+

result

)

;

//Output: True

Console

.

WriteLine

(

"

The result is:

"

+

result1

)

;

//Output: True

Console

.

WriteLine

(

"

The result is:

"

+

result2

)

;

//Output: True

Console

.

WriteLine

(

"

The result is:

"

+

result3

)

;

//Output: True/False

– Ở ví dụ trên, các phép sánh giữa 2 ngày bằng nhau hoặc khởi tạo thời gian cụ thể thì cho ra kết quả luôn chính xác là True, hoặc khác nhau là False. Trong ví dụ có giá trị:

DateTime

.

Now

Thì câu lệnh này có nghĩa là thời gian sẽ bằng thời gian của hệ thống tại thời điểm đó. Khác với câu lệnh:

DateTime

.

Today

Câu lệnh này chỉ lấy ra ngày tháng năm của ngày hiện tạo. Phần thời gian mặc định 12:00:00 AM

– Đối với lệnh Now nếu chương trình đọc xong lệnh thứ nhất chuyển qua lệnh thứ hai sẽ có độ trễ, nếu nhanh có thể không. Nên kết quả Result3 có thể là True hoặc False, không xác định. Đó là demo để so sánh thế, thực ra bình thường cũng không có ai so sánh thời gian hiện tại với hiện tại như thế cả.

Chung quy lại một điều phương thức Equals này nếu muốn chính xác bạn cần xác định các giá trị thời gian cần so sánh cần phải cụ thể, vì hàm này so sánh sâu tới giá trị nhỏ nhất mà C# hỗ trợ chỉ cần thay đổi rất nhỏ cũng thay đổi kết quả trả về. Nói lại, Ticks ở đây là giá trị được chuyển đổi từ Ngày Tháng cụ thể nào đó. Nó lớn hơn 100 lần so với Nanoseconds (Nano giây). Ví dụ  27/09/2013 23:30 PM sẽ được quy ra một số nguyên  long 64bit mà ta gọi là Ticks.

Demo:

To be continued . . .

Share

Happy Reading!

Xử Lý DateTime Trong C# – Phần 2

4

/

5

Oleh

Unknown

Oleh

Sanh Mổ Và Sanh Thường

Sanh mổ và sanh thường

Mổ lấy thai là phẫu thuật phổ biến của đẻ mổ. Trường hợp bạn cần sinh mổ bác sỹ sẽ chỉ định cho bạn. Với tình hình của bạn và thai nhi bạn hoàn toàn có thể chủ động nhận ra mình cần phải sinh mổ hay sinh thường?

Thông thường sau khi ăn 6 tiếng, thức ăn mới có thể tiêu hóa toàn bộ. Khi đó dạ dày trống và đồng thới trong dạ dày chỉ có ít dịch nên không gây nguy hiểm. Còn trước 6 tiếng, thức ăn vẫn còn trong dạ dày do chưa được tiêu hóa hết, nên rất nguy hiểm nếu có hiện tượng trào ngược xảy ra do mất kiểm soát khi gây mê….

Nếu thai đã đủ 38 – 40 tuần và thấy xuất hiện một số triệu chứng như: tử cung co thắt, âm đạo chảy ra chất màu máu, mót tiểu tiện, phá nước ối… thì bà bầu nên vào bệnh viện để chờ sanh. Tuy nhiên, ở mỗi người sẽ có những biểu hiện rất khác nhau.

Cuối cùng thì những tuần lễ mong đợi rồi cũng đã kết thức và bạn đã bắt đầu chuyển dạ. Đây là cao điểm của tiến trình mang thai của bạ, vì chỉ còn vài giờ nữa là bạn sẽ thấy được mặt con. Bạn sẽ rất phấn khởi, tuy nhiên cũng e sợ không biết rồi cuộc chuyển dạ của mình sẽ diễn ra thế nào.

Trong các giai đoạn khi chuyển dạ, bạn hãy thử qua nhiều tư thế khác nhau, vì hẳn là từng lúc khác nhau, thì có những tư thế thoải mái khác nhau.

Thời gian khó khăn nhất của tiến trình chuyển dạ thường rơi vào phần cuối của giai đoạn đầu khi các cơn co mạnh nhất. Các cơn co này kéo dài lối một phút và có thể chỉ cách nhau một phút thôi, nên có ít thời gian để nghỉ sau một cơn co, trước khi cơn sau ập tới bạn.

Mặc dù tiến trình chuyển dạ thường rất đau nhưng mỗi cơn đau đều đưa bạn đến gần sự trào đời của em bé thêm được một bước. Bạn có thể quyết tâm không dùng đến các biện pháp giảm đau, tuy nhiên bạn cũng nên cố gắng giữa đầu óc cởi mở.

Giờ đã tới cao điểm của tiến trình chuyển dạ, và em bé của bạn sắp sửa ra đời. Thật là hào hứng, khi bạn có thể sờ thấy đầu em bé lần đầu khi mới trồi ra, và chẳng mấy chốc sau đó, được nựng bé trên tay.

Sanh đẻ là một quá trình sinh lý tự nhiên cho nên sản phụ không nên có tâm lý hoảng sợ, căng thẳng, chỉ cần không có tình trạng khác thường thì có thể phối hợp tốt với bác sỹ và y tá hộ sinh để việc sinh đẻ tự nhiên được diễn ra thuận lợi.

Khai Báo Define Trong C/C++

Bài viết này mình sẽ hướng dẫn các bạn cách khai báo define trong c/c++ và cách sử dụng của nó.

Cách khai báo và sử dụng define

Cách khai báo define trong C/C++

#define là tiền sử lý trong ngôn ngữ C/C++ cho phép bạn đặt tên cho một hằng số nguyên hay hằng số thực. Trước khi biên dịch, trình biên dịch sẽ thay thế những tên hằng bạn đang sử dụng bằng chính giá trị của chúng. Quá trình thay thế này được gọi là quá trình tiền biên dịch (pre-compile).

Cú pháp khai báo

Ví dụ:

Trước khi chạy biên dịch chương trình sẽ thay PI bằng giá trị 3.14.

Cách sử dụng define trong c/c++

Trong quá trình sử dụng chúng ta cần tránh đặt các tên define giống các tên biến.

Quá trình trên sẽ biên dịch bị lỗi, lý do là trước khi biên dịch chương trình sẽ thay PI bằng giá trị 3.14. Nên sau khi biên dịch trình biên dịch sẽ gặp câu lệnh 3.14 = 3.14159; dẫn đến bị lỗi biên dịch.

Vì vậy, bạn nên hạn chế tối đa việc sử dụng #define để khai báo hằng số khi không cần thiết. Bạn có thể sử dụng cách khai báo sau để thay thế: const float PI= 3.4;

Ngoài cách dùng như một hằng số ta có thể sử dụng define một cách mền dẻo hơn.

Hoặc bạn cũng có thể sử dụng define để định nghĩa một hàm:

Cách khai báo và sử dụng typedef

Cách sử dụng typedef

Ngôn ngữ chương trình C/C++ cung cấp một từ khóa typedef, mà bạn có thể sử dụng để cung cấp kiểu cho một tên mới.

Ví dụ:

Sự khác nhau giữa typedef và define

typedef được giới hạn chỉ cung cấp các tên viết tắt cho các kiểu, trong khi đó #define có thể được sử dụng để định nghĩa tên hiệu cho cả các giá trị, như bạn có thể định nghĩa pi là 3.14, ….

Sự phiên dịch typedef được thực hiện bởi bộ biên dịch, trong khi lệnh #define được xử lý bởi bộ tiền xử lý.

Bài viết của mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !

Chia sẻ kiến thức lập trình là sở thích và đam mê của mình!

Toán Tử So Sánh Logic Và Các Câu Lệnh If Switch Trong C# .Net

Các toán tử so sánh trong C#

Các toán tử so sánh thực hiện phép toán trên hai số hạng và trả về kết quả kiểu bool với giá trị true hoặc false.

Ví dụ có hai biến int a = 5; và int b = 6; thì:

Debug phép toán so sánh

Các toán tử logic

Các toán tử logic thực hiện trên các số hạng kiểu bool và trả về kết quả bool là true hoặc false

Ví dụ nếu bool a = false; và bool a = true; thì

Câu lệnh if

Cú pháp lệnh này như sau (dạng đơn giản):

if (điều_kiện) câu_lệnh;//Câu lệnh thi hành nếu điều_kiện là đúng

Hoặc thi hành cả khối lệnh

if (điều_kiện) { các_câu_lệnh;//Câu lệnh thi hành nếu điều_kiện là đúng }

Dạng đậy đủ có thể định nghĩa lệnh (khối lệnh) thi hành nếu điều kiện logic đúng, và lệnh (khối lệnh) thi hành nếu điều kiện sai

if (điều_kiện) { các_câu_lệnh;//Câu lệnh thi hành nếu điều_kiện là đúng } else { các_câu_lệnh;//Câu lệnh thi hành nếu điều_kiện là sai }

Ví dụ:

int number = 1990; if ((number % 2) == 0) Console.WriteLine($"{number} là số chẵn"); int a = 5; int b = 10; { Console.WriteLine("Số a lớn hơn hoặc bằng số b"); } else { Console.WriteLine("Số a nhỏ hơn số b"); }

Sau else bạn có thể bắt đầu ngay một lệnh if khác để tạo ra cấu trúc if else, kiểm tra nhiều trường hợp

int a = 10; int b = 10; { Console.WriteLine("Số a lớn hơn hoặc bằng số b"); } else if (a < b) { Console.WriteLine("Số a nhỏ hơn số b"); } else { Console.WriteLine("Hai số a, b bằng nhau"); }

Câu lệnh ba thành phần với toán tử ?

Khi viết:

rs = expr1 ? expr2 : expr3;

Thì câu lệnh đó tương tương với

if (expr1) rs = expr2; else rs = expr3;

Có nghĩa nếu biểu thức expr1 là true thì lấy giá trị của expr2 và false thì lấy expr3

int age = 18; Console.WriteLine(mgs);

Ví dụ tìm số lớn nhất trong các số a, b, c

var a = 2; var b = 3.5; var c = 2;

Câu lệnh rẽ nhánh switch

Câu lệnh switch ... case áp dụng cho cấu trúc rẽ nhiều nhánh, nó thay thế cho nhiều cầu lệnh else if

switch (expr) { case expr1: break; case expr2: break; default: break; }

Câu lệnh switch trên sẽ so sánh expr với các biểu thức sau từ khóa case là expr1, expr2 ... nếu bằng biểu thức nào thì bắt đấu thi hành lệnh từ khối case đó cho đến khi gặp break(Nếu không gặp break nó thi hành cho đến cuối)

Nếu có khối default, nó sẽ thi hành nếu expr không rẽ vào nhánh case nào.

int number = 2; switch (number) { case 1: Console.WriteLine("number có giá trị một"); break; case 2: Console.WriteLine("number có giá trị hai"); break; default: Console.WriteLine("number khác một và hai"); break; }

Lệnh trên nếu sử dụng else if thì có dạng

int number = 2; if (number == 1) { Console.WriteLine("number có giá trị một"); } else if (number == 2) { Console.WriteLine("number có giá trị hai"); } else { Console.WriteLine("number khác một và hai"); }

Sử dụng switch rõ ràng, dễ đọc hơn khi số lượng else if nhiều

Source code: CS004_Logical_if_switch (Git), hoặc tải ex004