using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace UAS_LabelMachine.PublicMethod
{
class Analysis
{
///
/// Brand对应品牌,item对应DateCode,LotNo等,Data对应具体解析的数据
///
///
///
///
///
//Brand对应品牌,item对应DateCode,LotNo等,Data对应具体解析的数据
public static string AnalysisData(string Brand, string item, string Data)
{
string ReturnData = "";
switch (Brand)
{
//采集怡海能达村田的LotNo的解析规则
case "MURATA":
if (item.ToUpper() == "LOTNO" || item.ToUpper() == "DATECODE")
{
string Year = Data.Substring(2, 1);
string Month = Data.Substring(3, 1);
string Day = Data.Substring(4, 2);
//处理年份
//当前年份的前三位
string CurrentYear_3 = DateTime.Now.Year.ToString().Substring(0, 3);
//采集到的年份
int CollectYear = int.Parse(CurrentYear_3 + Year);
//当前的年份
int CurrentYear = int.Parse(DateTime.Now.Year.ToString());
//如果采集到的年份大于当前年份,将十年数-1
if (CollectYear > CurrentYear)
{
Year = int.Parse(CurrentYear_3) - 1 + Year;
}
else
{
Year = CollectYear.ToString();
}
//处理月份
switch (Month)
{
case "O":
Month = "10";
break;
case "N":
Month = "11";
break;
case "D":
Month = "12";
break;
default:
Month = "0" + Month;
break;
}
ReturnData = Year + Month + Day;
}
break;
case "KEC":
if (item.ToUpper() == "LOTNO" || item.ToUpper() == "DATECODE")
{
string Year = Data.Substring(0, 1);
string Week = Data.Substring(1, 2);
DateTime DateBegin = DateTime.Now;
GetDaysOfWeeks(int.Parse("201" + Year), int.Parse(Week), out DateBegin);
ReturnData = DateBegin.ToString("yyyyMMdd");
}
break;
default:
break;
}
return ReturnData;
}
public static bool GetDaysOfWeeks(int year, int index, out DateTime first)
{
first = DateTime.MinValue;
if (year < 1700 || year > 9999)
{
//"年份超限"
return false;
}
if (index < 1 || index > 53)
{
//"周数错误"
return false;
}
DateTime startDay = new DateTime(year, 1, 1); //该年第一天
DateTime endDay = new DateTime(year + 1, 1, 1).AddMilliseconds(-1);
int dayOfWeek = 0;
if (Convert.ToInt32(startDay.DayOfWeek.ToString("d")) > 0)
dayOfWeek = Convert.ToInt32(startDay.DayOfWeek.ToString("d")); //该年第一天为星期几
if (dayOfWeek == 7) { dayOfWeek = 0; }
if (index == 1)
{
first = startDay;
}
else
{
first = startDay.AddDays((7 - dayOfWeek) + (index - 1) * 7); //index周的起始日期
}
if (first > endDay) //startDayOfWeeks不在该年范围内
{
//"输入周数大于本年最大周数";
return false;
}
return true;
}
}
}