大家在使用C#進行編程時,總會遇到,一些實時顯示重繪時間的專案,但是呢,許多剛接觸C#的小白簡直是噩夢,尤其使用WPF時,又沒有Timer控制元件,好不容易找到了顯示時間代碼,發現只能顯示一次最新讀取的時間,這里演示控制臺程式表單或者wpf應用會在接下來的文章中講述:
在此演示的時間操作與html的時間邏輯相似,個人主頁上的時間以及時間百分比都是通過這個C#程式進行2次開發和編程的,html版的獲取時間將會寫在博客專題中,擇日再進行搬移.
創建一個c#控制臺程式
獲取本地時間的代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
System.Timers.Timer t = new System.Timers.Timer();
t.Interval = 1000; //重繪時間
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
t.Start();
Console.ReadKey();
}
static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Console.Write("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); //\b代表退格符,與\u0008匹配
Console.Write(DateTime.Now.ToString("yyyy-dd-MM HH:mm:ss")); //y表示年,d表示月,m表示日,h表示小時,m表示時間,s表示秒,在html中也可以使用這個格式.
}
}
}
c# 時間百分比
上次在某個手機app上看到有當前時間的占比情況,這個是個很好的idea,但可惜那個app上的演算法是錯的(偷笑),它的演算法是:
當前時間 ÷ 一天24小時 = 當前時間的占比
但當到了凌晨0點-凌晨1點的時候,速度是不正常且有偏差的所以經過多次和一位數學大佬商討演算后,公式如下
(((小時*3600)+ (分鐘*60) + (秒))/864)
話不多說直接上原始碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace timenow
{
class Program
{
/// 判斷當前時間過了今天的百分之多少
///
///
static double DayTimePassed()
{
DateTime dt = DateTime.Now;
double Numerator = dt.Hour * 60 * 60 + dt.Minute * 60 + dt.Second;
double Denominator = 24 * 60 * 60;
return Numerator / Denominator;
}
///
/// 判斷指定時間過了當日的百分之多少
///
///
///
static double DayTimePassed(DateTime dt)
{
double Numerator = dt.Hour * 60 * 60 + dt.Minute * 60 + dt.Second;
double Denominator = 24 * 60 * 60;
return Numerator / Denominator;
}
static void Main(string[] args)
{
System.Timers.Timer t = new System.Timers.Timer();
t.Interval = 1000;
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
t.Start();
Console.ReadKey();
}
static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Console.Clear();//重繪螢屏
Console.WriteLine(DateTime.Now.ToString());
Console.WriteLine("Day: " + DayTimePassed().ToString("P"));
Console.WriteLine("Day: " + DayTimePassed(DateTime.Now).ToString("P"));
Console.ReadLine();
}
}
}
兩種方式有共通之處,在使用中取決于是否需要呼叫內部資料或是直接輸出時間.(也希望那家app廠商進行改進吧 ( ̄??))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/17031.html
標籤:C#
