using Shared;
using System;
using System.Collections.Generic;
using System.Text;
namespace HDL_ON.Stan
{
///
/// 一般的共通逻辑方法
///
public class HdlCommonLogic
{
#region ■ 变量声明___________________________
///
/// 界面相关的逻辑
///
private static HdlCommonLogic m_Current;
///
/// 界面相关的逻辑
///
public static HdlCommonLogic Current
{
get
{
if (m_Current == null)
{
m_Current = new HdlCommonLogic();
}
return m_Current;
}
}
#endregion
#region ■ 16进制转化_________________________
///
/// 将16进制的文本翻译为正常文本
///
/// 16进制的文本
/// 以多少个字节为一组
///
public string TranslateHexadecimalIntoText(string hexText, int count = 2)
{
string textValue = string.Empty;
while (hexText.Length > 0)
{
string temp = hexText.Substring(0, count);
hexText = hexText.Substring(count);
int value = Convert.ToInt32(temp, 16);
textValue += ((char)value).ToString();
}
return textValue;
}
///
/// 将文本翻译为16进制的文本
///
/// 指定文本
///
public string TranslateTextIntoHexadecimal(string text)
{
string textValue = string.Empty;
foreach (char c in text)
{
int value = Convert.ToInt32(c);
textValue += Convert.ToString(value, 16);
}
return textValue;
}
#endregion
#region ■ 加密和解密_________________________
///
/// 加密密码
///
///
///
///
public string EncryptPassword(string keys, string strPsw)
{
try
{
if (string.IsNullOrEmpty(strPsw) == true)
{
return strPsw;
}
var des = new System.Security.Cryptography.DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.Default.GetBytes(strPsw);
des.Key = ASCIIEncoding.ASCII.GetBytes(keys);
des.IV = ASCIIEncoding.ASCII.GetBytes(keys);
var ms = new System.IO.MemoryStream();
var cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
return ret.ToString().ToLower();
}
catch { return strPsw; }
}
///
/// 解密密码
///
///
///
public string DecryptPassword(string keys, string strPsw)
{
try
{
if (strPsw == string.Empty)
{
return strPsw;
}
var des = new System.Security.Cryptography.DESCryptoServiceProvider();
byte[] inputByteArray = new byte[strPsw.Length / 2];
for (int x = 0; x < strPsw.Length / 2; x++)
{
int i = (Convert.ToInt32(strPsw.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.ASCII.GetBytes(keys);
des.IV = ASCIIEncoding.ASCII.GetBytes(keys);
var ms = new System.IO.MemoryStream();
var cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
catch { return strPsw; }
}
#endregion
#region ■ 时间转换___________________________
///
/// 将utc时间类型的字符串(这种格式:2019-11-11T11:31:01),转换为本地时间
///
/// utc时间,这种格式:2019-11-11T11:31:01
///
public DateTime ConvertUtcTimeToLocalTime(string utcTimeText)
{
var utcTime = Convert.ToDateTime(utcTimeText);
return TimeZoneInfo.ConvertTimeFromUtc(utcTime, TimeZoneInfo.Local);
}
///
/// 将utc时间类型的字符串(这种格式:1597302318861,13位数),转换为本地时间
///
/// utc时间,这种格式:1597302318861,13位数
///
public DateTime ConvertUtcTimeToLocalTime2(string utcTimeText)
{
DateTime dtStart = new DateTime(1970, 1, 1);
long lTime = long.Parse(utcTimeText + "0000");
TimeSpan toNow = new TimeSpan(lTime);
DateTime utcTime = dtStart.Add(toNow);
return TimeZoneInfo.ConvertTimeFromUtc(utcTime, TimeZoneInfo.Local);
}
///
/// 单纯的将时间类型的字符串(这种格式:1597302318861,13位数),转换时间类型
///
///
///
public DateTime ConvertTextToTime(string timeText)
{
DateTime dtStart = new DateTime(1970, 1, 1);
long lTime = long.Parse(timeText + "0000");
TimeSpan toNow = new TimeSpan(lTime);
return dtStart.Add(toNow);
}
///
/// 转换为日期文本(考虑中英文,返回格式:2021年9月1日(中文情况) Sept 1,2021(英文))
///
/// 月
/// 日
/// 年(可以省略)
///
public string ConvertDayText(int i_month, int i_day, int i_year = -1)
{
//中文
if (Language.CurrentLanguage == "Chinese")
{
string txt = i_month + Language.StringByID(StringId.month) + i_day + Language.StringByID(StringId.day);
if (i_year != -1)
{
txt = i_year + Language.StringByID(StringId.Years) + txt;
}
return txt;
}
//英文
string yearText = i_year == -1 ? string.Empty : "," + i_year.ToString();
if (i_month == 1) { return "Jan " + i_day + yearText; }
if (i_month == 2) { return "Feb " + i_day + yearText; }
if (i_month == 3) { return "Mar " + i_day + yearText; }
if (i_month == 4) { return "Apr " + i_day + yearText; }
if (i_month == 5) { return "May " + i_day + yearText; }
if (i_month == 6) { return "Jun " + i_day + yearText; }
if (i_month == 7) { return "Jul " + i_day + yearText; }
if (i_month == 8) { return "Aug " + i_day + yearText; }
if (i_month == 9) { return "Sept " + i_day + yearText; }
if (i_month == 10) { return "Oct " + i_day + yearText; }
if (i_month == 11) { return "Nov " + i_day + yearText; }
if (i_month == 12) { return "Dec " + i_day + yearText; }
return string.Empty;
}
///
/// 获取时间的翻译文本
///
///
/// 小时的文本
/// 分的文本
/// 秒的文本
///
public string GetTimeString(int second, string hourText, string minuText, string secondText)
{
if (second == 0) { return string.Empty; }
string timeStr = string.Empty;
int hour = second / 3600;
int minu = second % 3600 / 60;
int sec = second % 60;
//中文
if (Language.CurrentLanguage == "Chinese")
{
if (hour > 0) { timeStr += hour + hourText; }
if (minu > 0) { timeStr += minu + minuText; }
if (sec > 0) { timeStr += sec + secondText; }
}
//英文
else
{
if (hour > 0) { timeStr += hour + "h"; }
if (minu > 0) { timeStr += minu + "min"; }
if (sec > 0) { timeStr += sec + "s"; }
}
return timeStr;
}
///
/// 获取月的简写文本(考虑中英文,返回格式:月(中文情况) Sept.(英文))
///
/// 月
///
public string GetMonthShortText(int i_month)
{
//中文
if (Language.CurrentLanguage == "Chinese")
{
return Language.StringByID(StringId.month);
}
//英文
if (i_month == 1) { return "Jan."; }
if (i_month == 2) { return "Feb."; }
if (i_month == 3) { return "Mar."; }
if (i_month == 4) { return "Apr."; }
if (i_month == 5) { return "May."; }
if (i_month == 6) { return "Jun."; }
if (i_month == 7) { return "Jul."; }
if (i_month == 8) { return "Aug."; }
if (i_month == 9) { return "Sept."; }
if (i_month == 10) { return "Oct."; }
if (i_month == 11) { return "Nov."; }
if (i_month == 12) { return "Dec."; }
return string.Empty;
}
///
/// 获取小时的文本(中英文)
///
///
public string GetHourText()
{
//中文
if (Language.CurrentLanguage == "Chinese")
{
//小时
return Language.StringByID(StringId.h);
}
//英文
return "h";
}
///
/// 获取分钟的文本(中英文)
///
///
public string GetMinuteText()
{
//中文
if (Language.CurrentLanguage == "Chinese")
{
//分
return Language.StringByID(StringId.m);
}
//英文
return "min";
}
///
/// 获取分钟的文本(中英文)
///
///
public string GetSecondText()
{
//中文
if (Language.CurrentLanguage == "Chinese")
{
//秒
return Language.StringByID(StringId.s);
}
//英文
return "s";
}
#endregion
#region ■ 系统剪切板_________________________
///
/// 将文本复制到系统的剪切板
///
/// 需要复制进去的东西
/// 复制成功之后,显示的文本,可以为null
public void SetTextToShearPlate(string i_text, string i_msg)
{
#if __Android__
var cm = (Android.Content.ClipboardManager)Application.Activity.GetSystemService(Android.Content.Context.ClipboardService);
// 将文本内容放到系统剪贴板里。
cm.Text = i_text;
#endif
//显示tip消息
HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, i_msg);
}
#endregion
#region ■ 一般方法___________________________
///
/// 检测日期是否合法
///
/// 年
/// 月
/// 日
///
public bool CheckDateIsRight(int i_year, int i_month, int i_day)
{
if (i_year <= 0) { i_year = DateTime.Now.Year; }
int two = DateTime.IsLeapYear(i_year) == true ? 29 : 28;
int[] arry = new int[] { 31, two, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (i_month < 1 || i_month > 12) { return false; }
return i_day <= arry[i_month - 1];
}
///
/// 检测是否是纯数字
///
///
///
public bool CheckIsNumber(string i_text)
{
foreach (var c in i_text)
{
if (char.IsNumber(c) == false)
{
return false;
}
}
return true;
}
///
/// 从一堆文字中,获取这一堆文字里面数字字符串的最长长度
///
///
///
public int GetNumberMaxLength(List listText)
{
int maxLength = 0;
foreach (var text in listText)
{
string value = string.Empty;
foreach (var c in text)
{
if (char.IsNumber(c) == true)
{
//数字
value += c.ToString();
continue;
}
else if (value != string.Empty)
{
//判断数字长度
if (maxLength <= value.Length)
{
maxLength = value.Length;
}
value = string.Empty;
}
}
//判断数字长度
if (maxLength <= value.Length)
{
maxLength = value.Length;
}
}
return maxLength;
}
#endregion
}
}