第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# TimeSpan 的 Golang time.duration 格式

C# TimeSpan 的 Golang time.duration 格式

Go
呼喚遠方 2022-10-24 15:19:49
我最近做了一些 Golang 并且非常喜歡time.duration的格式。例如,“ 1d2h3s ”。我找不到在 C# TimeSpan 類中使用這種格式的方法。有任何想法嗎?
查看完整描述

1 回答

?
翻閱古今

TA貢獻1780條經(jīng)驗 獲得超5個贊

似乎不存在您在 Golang 上找到它的方式的格式化實現(xiàn),但如果您更喜歡這種方式,我編寫了一個自定義方法來允許您:


public static class TimeSpanHelper

{

    private static List<(string Abbreviation, TimeSpan InitialTimeSpan)> timeSpanInfos = new List<(string Abbreviation, TimeSpan InitialTimeSpan)>

    {

            ("y", TimeSpan.FromDays(365)), // Year

            ("M", TimeSpan.FromDays(30)), // Month

            ("w", TimeSpan.FromDays(7)), // Week

            ("d", TimeSpan.FromDays(1)), // Day

            ("h", TimeSpan.FromHours(1)), // Hour

            ("m", TimeSpan.FromMinutes(1)), // Minute

            ("s", TimeSpan.FromSeconds(1)), // Second

            ("t", TimeSpan.FromTicks(1)) // Tick

    };


    public static TimeSpan ParseDuration(string format)

    {

        var result = timeSpanInfos

            .Where(timeSpanInfo => format.Contains(timeSpanInfo.Abbreviation))

            .Select(timeSpanInfo => timeSpanInfo.InitialTimeSpan * int.Parse(new Regex(@$"(\d+){timeSpanInfo.Abbreviation}").Match(format).Groups[1].Value))

            .Aggregate((accumulator, timeSpan) => accumulator + timeSpan);

        return result;

    }

}

您可以通過以下方式使用它:


var total = TimeSpanHelper.ParseDuration("1d2h3s");

請注意,有一些內(nèi)置實現(xiàn)可以讓您獲得相同的結(jié)果:


該TimeSpan結(jié)構(gòu)具有以下構(gòu)造函數(shù)頭:


public TimeSpan(long ticks)


public TimeSpan(int hours, int minutes, int seconds)


public TimeSpan(int days, int hours, int minutes, int seconds)


public TimeSpan(int days, int hours, int minutes, int seconds, int milliseconds)

因此,我們可以通過以下方式 C#ify 您的示例:


var total = new TimeSpan(1, 2, 0, 3);

或者,我們可以在結(jié)構(gòu)上使用一些靜態(tài)方法TimeSpan,允許我們輸入特定時間段的值:


public static TimeSpan FromDays(double value)


public static TimeSpan FromHours(double value)


public static TimeSpan FromMinutes(double value)


public static TimeSpan FromSeconds(double value)


public static TimeSpan FromMilliseconds(double value)


public static TimeSpan FromTicks(long value)

所以我們也可以這樣做:


var total = TimeSpan.FromDays(1) + TimeSpan.FromHours(2) + TimeSpan.FromSeconds(3);


查看完整回答
反對 回復(fù) 2022-10-24
  • 1 回答
  • 0 關(guān)注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號