using System;
using System.Configuration;
using System.Drawing;
using System.Globalization;
using System.Text.RegularExpressions;
using System.Threading;
namespace GCAS.Code
{
public class Tools
{
public static byte[] StrToToHexByte(string hexString)
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % 2) != 0)
hexString += " ";
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
return returnBytes;
}
public static int ToIndex(string columnName)
{
if (!Regex.IsMatch(columnName.ToUpper(), @"[A-Z]+")) { throw new Exception("invalid parameter"); }
int index = 0;
char[] chars = columnName.ToUpper().ToCharArray();
for (int i = 0; i < chars.Length; i++)
{
index += (chars[i] - 'A' + 1) * (int)Math.Pow(26, chars.Length - i - 1);
}
return index;
}
#region 获取 本周、本月、本季度、本年 的开始时间或结束时间
///
/// 获取结束时间
///
/// Week、Month、Season、Year
///
///
public static DateTime? GetTimeStartByType(string TimeType, DateTime now)
{
switch (TimeType)
{
case "Week":
int dayOfWeek = -1 * (int)now.Date.DayOfWeek;
DateTime weekStartTime = now.AddDays(dayOfWeek + 1);//取本周一
if (dayOfWeek == 0) //如果今天是周日,则开始时间是上周一
{
weekStartTime = weekStartTime.AddDays(-7);
}
return weekStartTime;
case "Month":
return now.AddDays(-now.Day + 1);
case "Season":
var time = now.AddMonths(0 - ((now.Month - 1) % 3));
return time.AddDays(-time.Day + 1);
case "Year":
return now.AddDays(-now.DayOfYear + 1);
default:
return null;
}
}
///
/// 获取结束时间
///
/// Week、Month、Season、Year
///
///
public static DateTime? GetTimeEndByType(string TimeType, DateTime now)
{
switch (TimeType)
{
case "Month":
return now.AddMonths(1).AddDays(-now.AddMonths(1).Day + 1).AddDays(-1);
case "Season":
var time = now.AddMonths((3 - ((now.Month - 1) % 3) - 1));
return time.AddMonths(1).AddDays(-time.AddMonths(1).Day + 1).AddDays(-1);
case "Year":
var time2 = now.AddYears(1);
return time2.AddDays(-time2.DayOfYear);
default:
return null;
}
}
#endregion
public static string GetWeek(int week)
{
switch (Thread.CurrentThread.CurrentUICulture.Name)
{
case "en":
return ((DayOfWeek)week).ToString();
case "zh-Hans":
switch (week)
{
case 1:
return "星期一";
case 2:
return "星期二";
case 3:
return "星期三";
case 4:
return "星期四";
case 5:
return "星期五";
case 6:
return "星期六";
case 7:
return "星期日";
default:
return "未知";
}
default:
return "未知";
}
}
public static string GetWeek(DayOfWeek week)
{
switch (Thread.CurrentThread.CurrentUICulture.Name)
{
case "en":
return (week).ToString();
case "zh-Hans":
switch (week)
{
case DayOfWeek.Sunday:
return "星期日";
case DayOfWeek.Monday:
return "星期一";
case DayOfWeek.Tuesday:
return "星期二";
case DayOfWeek.Wednesday:
return "星期三";
case DayOfWeek.Thursday:
return "星期四";
case DayOfWeek.Friday:
return "星期五";
case DayOfWeek.Saturday:
return "星期六";
default:
return "未知";
}
default:
return "未知";
}
}
public static string GetDay(string time)
{
var dateTime = Convert.ToDateTime(DateTime.Now.Year + "-" + time);
switch (Thread.CurrentThread.CurrentUICulture.Name)
{
case "en":
return dateTime.ToString("MMM. dd", CultureInfo.CreateSpecificCulture("en-GB"));
case "zh-Hans":
return dateTime.ToString("MM月dd号");
default:
return "未知";
}
}
public static string GetMonth(int month)
{
switch (Thread.CurrentThread.CurrentUICulture.Name)
{
case "zh-Hans":
return month.ToString().PadLeft(2, '0') + "月份";
case "en":
switch (month)
{
case 1:
return "January";
case 2:
return "February";
case 3:
return "March";
case 4:
return "April";
case 5:
return "May";
case 6:
return "June";
case 7:
return "July";
case 8:
return "August";
case 9:
return "September";
case 10:
return "October";
case 11:
return "November";
case 12:
return "December";
default:
return "未知";
}
default:
return "未知";
}
}
public static Bitmap GetLoginBackground()
{
switch (Thread.CurrentThread.CurrentUICulture.Name)
{
case "en":
return Properties.Resources.loginbgEN;
case "zh-Hans":
return Properties.Resources.loginbgZH;
default:
return Properties.Resources.loginbgZH;
}
}
public static bool ToBool(object obj)
{
if (obj == null)
return false;
if (obj.ToString().ToUpper() == "TRUE" || obj.ToString() == "1")
return true;
if (obj.ToString().ToUpper() == "FALSE" || obj.ToString() == "0")
return false;
return false;
}
public static void UpdateAppConfig(string newKey, string newValue)
{
bool isModified = false;
foreach (string key in ConfigurationManager.AppSettings)
{
if (key == newKey)
{
isModified = true;
}
}
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (isModified)
{
config.AppSettings.Settings.Remove(newKey);
}
config.AppSettings.Settings.Add(newKey, newValue);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
public static T ToEnum(string name)
{
Type typeFromHandle = typeof(T);
if (typeFromHandle.IsEnum)
{
return (T)Enum.Parse(typeof(T), name, true);
}
throw new InvalidCastException("必须是枚举类型才能转换。");
}
}
}