Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด DateTimeOffset.AddTicks ใน C# พร้อมตัวอย่าง


บทนำ

เมธอด DateTimeOffset.AddTicks() ใน C# ใช้เพิ่มจำนวน ticks ที่ระบุให้กับค่าของอินสแตนซ์นี้ 1 tick = 100 nanoseconds (0.0001 milliseconds) หากต้องการลบ ticks ให้ระบุค่าลบ

ไวยากรณ์ (Syntax)

public DateTimeOffset AddTicks (long val);

โดยที่ val คือจำนวน ticks (100-nanosecond intervals)

ตารางจำนวน ticks ต่อหน่วยเวลา

ช่วงเวลา จำนวน ticks
1 วินาที10,000,000
1 นาที600,000,000
1 ชั่วโมง36,000,000,000
1 วัน864,000,000,000
1 สัปดาห์6,048,000,000,000
1 เดือนขึ้นอยู่กับจำนวนวันในเดือน
ปีไม่ใช่ปีอธิกสุรทิน315,360,000,000,000
ปีอธิกสุรทิน316,224,000,000,000

ตัวอย่างที่ 1: เพิ่ม 3 วินาที (30,000,000 ticks)

using System;

public class Demo 
{
    public static void Main()
    {
        DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 11, 11, 8, 20, 10, new TimeSpan(-5, 0, 0));
        Console.WriteLine("DateTimeOffset (before adding ticks) = {0}", dateTimeOffset);
        
        // 3 seconds = 30,000,000 ticks
        DateTimeOffset res = dateTimeOffset.AddTicks(30000000);
        Console.WriteLine("DateTimeOffset (after adding ticks) = {0}", res);
    }
}

ผลลัพธ์

DateTimeOffset (before adding ticks) = 11/11/2019 8:20:10 AM -05:00
DateTimeOffset (after adding ticks) = 11/11/2019 8:20:13 AM -05:00

ตัวอย่างที่ 2: ลบ 2 วินาที (-20,000,000 ticks)

using System;

public class Demo 
{
    public static void Main()
    {
        DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 11, 11, 8, 20, 10, new TimeSpan(-5, 0, 0));
        Console.WriteLine("DateTimeOffset (before subtracting ticks) = {0}", dateTimeOffset);
        
        // 2 seconds = 20,000,000 ticks
        DateTimeOffset res = dateTimeOffset.AddTicks(-20000000);
        Console.WriteLine("DateTimeOffset (after subtracting ticks) = {0}", res);
    }
}

ผลลัพธ์

DateTimeOffset (before subtracting ticks) = 11/11/2019 8:20:10 AM -05:00
DateTimeOffset (after subtracting ticks) = 11/11/2019 8:20:08 AM -05:00

สรุป

เมธอด AddTicks() ให้การควบคุมเวลาระดับละเอียดที่สุด (100 nanoseconds) ใช้ในการคำนวณเวลาที่ต้องการความแม่นยำสูง ระบบ real-time หรือการ benchmark คืนอินสแตนซ์ DateTimeOffset ใหม่ (immutable) ไม่เปลี่ยนค่าต้นฉบับ