C# 요일 구하기

Posted 2016.01.19 15:32

private string GetDayOfWeek(DateTime dateTime)

{

var day = dateTime.DayOfWeek;

string week = string.Empty;

switch (day)

{

case DayOfWeek.Monday:

week "";

                  break;

case DayOfWeek.Tuesday:

week "";

break;

case DayOfWeek.Wednesday:

week "";

break;

case DayOfWeek.Thursday:

week "";

break;

case DayOfWeek.Friday:

week = "";

break;

case DayOfWeek.Saturday:

week = "";
break;

case DayOfWeek.Sunday:

week = "";

break;

default:

break;

}

return week;

}


신고

날짜와 시간의 형식에 맞춘 String을 DateTime으로 변경해보자.

 

String을 DateTime으로 변경하는 방법은 여러가지 있습니다. 보통 아래방법들이 많이 사용됩니다.

 

1. Convert.ToDateTime("날짜")  - 보통 Type을 변경할때 많이 쓰이는 Convert 함수입니다.

2. DateTime.Parse("날짜") - DateTime Class에서 제공하는 메소드로 Convert.ToDateTime과 별반 차이가 없습니다.

3. DateTime.TryParse("날짜",bool) - Parse()의 확장형으로 변경과 함께 정상적으로 변경이 되었는지 확인값도 리턴합니다.

4. DateTime.ParseExact("날짜","형식") - String에 들어가있는 날짜 형식을 사용자가 지정할수 있습니다.

 

4번의 ParseExact()메소드를 제외하고는(이건 형식을 지정할수 있으니...) 일정한 형식에 맞춰 넣어줘야지 DateTime형으로 정상적으로 변경됩니다. 아래 예제 소스로 하나하나 알아보도록 하겠습니다.

 

1. 날짜 입력시

 

1-1. 년,월,일 구분값은 [스페이스값],[/],[-] 으로만 구분가능하다. (섞여도 상관없습니다.)

DateTime dti = Convert.ToDateTime("2015 11 13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("2015-11-13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("2015/11/13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("2015-11/13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("2015/11 13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)           
DateTime dti = Convert.ToDateTime("20151113");        //에러 (구분값 없음)
DateTime dti = Convert.ToDateTime("2015_11_13");      //에러 (구분값 에러)
DateTime dti = Convert.ToDateTime("2015:11:13");      //에러 (구분값 에러 :는 시간에서 사용가능)

1-2. 최소한 []과 []을 입력해주어야 한다. (년도는 미입력시 현재 년도로 자동입력됩니다.)

DateTime dti = Convert.ToDateTime("11 13");       //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("15 11 13");    //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("30");          //에러
DateTime dti = Convert.ToDateTime("30 15");       //에러 (30월이 없으므로 에러)

1-3. 영어나 한글등 언어로 날짜를 입력시 해당 국가 표기방법으로만 입력해야한다. (섞이면 에러가 발생합니다.)

DateTime dti = Convert.ToDateTime("2015년11월13일");         //변환 가능 (2015년 11월 13일 오후 12:00:00) 
DateTime dti = Convert.ToDateTime("November 13, 2015");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("Nov 13, 2015");           //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("2015-11월13일");          //에러 (한글표기에 구분값이 들어가서 에러)
DateTime dti = Convert.ToDateTime("2015년11/13");            //에러 (한글표기에 구분값이 들어가서 에러)
DateTime dti = Convert.ToDateTime("11월 13, 2015");          //에러 (영문표기에 한글이 들어가서 에러)
DateTime dti = Convert.ToDateTime("2015Year 11Month 13Day"); //에러 (한국식 표기법을 영문으로 처리해서 에러)

 

2. 시간 입력시

 

2-1. 시간은 [:]으로만 구분가능하다. ('스페이스', '-' , '/' 를 넣으면 날짜로 인식합니다. 날짜는 미입력시 오늘날짜로 입력됩니다.)

DateTime dti = Convert.ToDateTime("10:15:22");        //변환 가능 (2015년 11월 13일 오전 10:15:22)
DateTime dti = Convert.ToDateTime("101522");          //에러 (구분자 에러)
DateTime dti = Convert.ToDateTime("10-15-22");        //에러 (2010년 15월 22일로 인식)
DateTime dti = Convert.ToDateTime("10/15/22");        //에러 (2010년 15월 22일로 인식)
DateTime dti = Convert.ToDateTime("10_15_22");        //에러 (구분자 에러)

2-2. 최소한 []와 []은 입력해주어야 한다. (초는 미입력시 00초로 자동입력됩니다.)

DateTime dti = Convert.ToDateTime("10:15");       //변환 가능 (2015년 11월 13일 오전 10:15:00)
DateTime dti = Convert.ToDateTime("30");          //에러 
DateTime dti = Convert.ToDateTime("30:15");       //에러 (30시가 없으므로 에러)

2-3. 영어나 한글등 언어로 날짜를 입력시 해당 국가 표기방법으로만 입력해야한다. (한국이외에는 xx : xx 표기법만 사용하는듯합니다.)

DateTime dti = Convert.ToDateTime("10시 15분 22초");  //변환 가능 (2015년 11월 13일 오전 10:15:22) 
DateTime dti = Convert.ToDateTime("10:15 22초");      //변환 가능 (?? 이해할수는 없지면 변환 된다..)
DateTime dti = Convert.ToDateTime("10시 15:22");      //에러 (표기방법 뒤섞임)

4. 오전/오후(AM/PM) 구분이 없을경우 24시 기준으로 입력되며 오전/오후 구분이 있을경우 12시 기준으로 입력된다.

DateTime dti = Convert.ToDateTime("PM 10시 15분 22초");   //변환 가능 (2015년 11월 13일 오후 10:15:22) 
DateTime dti = Convert.ToDateTime("오후 10:15:22");       //변환 가능 (2015년 11월 13일 오후 10:15:22)
DateTime dti = Convert.ToDateTime("22:15:22");            //변환 가능 (2015년 11월 13일 오후 10:15:22)
DateTime dti = Convert.ToDateTime("10:15:22 AM");         //변환 가능 (2015년 11월 13일 오전 10:15:22)
DateTime dti = Convert.ToDateTime("22:15:22 AM");         //에러 (오전/오후 구분자가 있을경우 12시간 기준)

 

1번과2번의 날짜/시간 입력방식만 지키면 날짜와 시간 모두 입력시 표기방법이 뒤섞여도 상관없습니다.

(날짜는 영문, 시간은 한글로 입력해도 상관없습니다.)


예제는 모두 Convert.ToDateTime() 메소드만 사용하였지만 DateTime.Parse()메소드도 모두 똑같이 적용됩니다.


나머지 3,4번 메소드는 후에 다시 블로깅하겠습니다.

신고

날짜 간격 구하기

Posted 2015.12.07 12:11

ubtract
: 해당 인스턴스에서 지정한 날짜와 시간을 뺀다.

TimeSpan 
: 시간 간격을 나타낸다.

DateTime
: 일반적으로 날짜와 시간으로 표시된 시간을 나타낸다.

DateTime Date1 DateTime.Now;
DateTime Date2 DateTime.Parse("2011-07-01");

TimeSpan dt = Date1.Subtract(Date2);


일반적으로 TimeSpan 을 사용하면 두 시간의 간격을 시간까지 가져온다.
시간간격의 일 구성요소를 가져오고 싶다면 subDate뒤에  .Days을 붙여 사용하면 된다.



출력결과
subDate.Days 
(.Days를 사용하였을 경우)



subDate
(.Days를 사용하지 않았을 경우)


신고

문자 입력시 숫자인지 확인 하여 

true or false 리턴

public static bool CheckIsNum(string value)
{
            string check = value.Trim();
            bool returnVal = false;
            int dotCount = 0;
            for (int i = 0; i < check.Length; i++)
            {
                if (System.Char.IsNumber(check, i))
                    returnVal = true;
                else
                {
                    if (check.Substring(i, 1) == ".")
                    {
                        returnVal = true;
                        dotCount++;
                    }
                    else
                    {
                        returnVal = false;
                        break;
                    } 
                }
            }
            if (dotCount > 1)
            {
                returnVal = false;
            }
            return returnVal;
 }

신고

C# 정규식

Posted 2012.05.25 17:20

using System.Text.RegularExpressions; 


protected string return_Val = "<script>alert(111)</script>";

protected void Page_Load(obeject secder, EventArgs e)
{
          string str_Val = "";
          str_Val = CheckXSS(return_Val );  
          Respons.Write(str_Val);

}

public static string CheckXSS(string str_Regex)
{      

  string return_Val  = str_Regex.ToLower().Trim();

  Regex regex = new .Regex(@"(<(?!s>)");

        Boolean valBool = regex.IsMatch(return_Val);
       if (valBool )
       {
            return = str_Regex.Replace("<","&lt;").Replace(">","&gt;");
       }
       else
       {
             return = str_Regex;
       }
}


XSS 스크립트 공격에 대하여 방어하는 목적으로 사용하려고 만들다 보니

이런 부분이 조금은 유용하게 정규식과 잘 혼용해서 쓸수 있을거 같아 만들어 보았다.

저작자 표시
신고

엑셀 DB화

Posted 2012.02.09 15:52

OleDb을 이용해서 DB select 하듯이 엑셀내용을 DataTable로 읽어오는 부분입니다.
 
<<예제소스 : 필요에 따라 변경하세요~>>
               string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended
               Properties=Excel 8.0;", 파일명);
                OleDbConnection conn = new OleDbConnection(connectionString);
                conn.Open();
                //시트명을 datatable로 반환한다.
                DataTable worksheets = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                //첫번째 시트를 가져오는 쿼리작성
                string commandString = String.Format("SELECT * FROM [{0}]", worksheets.Rows[0]["TABLE_NAME"]);
                //Command 생성
                OleDbCommand cmd = new OleDbCommand(commandString, conn);
                OleDbDataAdapter dapt = new OleDbDataAdapter(cmd);
                //DataSet이나 DataTable에 채우기
                DataSet ds = new DataSet();
                dapt.Fill(ds);
                conn.Close();
 
엑셀 DB업로드가 확실하게 어떤건지 모르겠지만..
엑셀내용을 Row단위로 DB에 Insert하는게 아닐까 생각해봅니다.
그러면 저렇게 읽어서 반환된 DataTable에 Row별로 DB에 Insert하시면될듯합니다.
DB 컬럼 = 엑셀컬럼 두개가 같다면 쉽게 될듯하고요..
다르다면 머리를 더 슝슝 굴려야 할듯합니다.
신고
매번 string 형식을 byte로 잘라서 써야 될때가 많은데 그럴때마다 만들어서 썻던거 같다.
이렇게 정의 해놓고 쓴다면 훨씬 편한듯 하네요.

ex)아래 형식을 확인해 보면 값이 = Strin..으로 나오게 됩니다.

string str_string = StringCutByte("String이다.", 10, ".."); 


protected string StringCutByte(string str, int i_ByteCount, string str_attach)

    {

        if (i_ByteCount< 3)

            throw new ArgumentOutOfRangeException("i_ByteCount");

        StringBuilder sb = new StringBuilder(i_ByteCount);

        foreach (char c in str)

        {

            sb.Append(c);

            int count = System.Text.Encoding.Default.GetByteCount(sb.ToString());

            if (count > i_ByteCount)

            {

                sb.Remove(sb.Length - 1, 1);

                while (System.Text.Encoding.Default.GetByteCount(sb.ToString() ) > i_ByteCount&& sb.Length > 0)

                {

                    sb.Remove(sb.Length - 1, 1);

                }

                sb.Append(str_attach);

                break;

            }

        }

        return sb.ToString();

    }

저작자 표시 비영리 변경 금지
신고

xml string을 DataSet으로 읽기(C#)

Posted 2009.12.08 10:34


xml string을 DataSet으로 읽기(C#) 

DataSet 에는 ReadXML이라는 메소드가 있어서,

파일에서는 바로 XML구조를 DataSet으로 읽어낼 수 있습니다.

하지만 문자열에서 읽는 것은 지원하지 않습니다.

문자열을 DataSet으로 읽기 위해서는 MemoryStream 객체를 사용해서 읽은 후에 가능합니다.

 

//데이터셋 선언

System.Data.DataSet dsXML = new DataSet();

//XML형태의 문자열
string strXML = "<result ><FILEDS>ACCOUNT;^~!ENTITY;^~!APP</FILEDS><RECORDCOUNT>0</RECORDCOUNT><DATA>;^~!;^~!</DATA></result>";

//문자열을 MemoryStream객체를 사용해서 읽기
System.IO.MemoryStream streamXML = new System.IO.MemoryStream(System.Text.Encoding.Default.GetBytes(strXML));

//Stream으로부터 DataSet을 읽는다
dsXML.ReadXml(streamXML);

 

DataSet 에는 ReadXML이라는 메소드가 있어서,

파일에서는 바로 XML구조를 DataSet으로 읽어낼 수 있습니다.

하지만 문자열에서 읽는 것은 지원하지 않습니다.

문자열을 DataSet으로 읽기 위해서는 MemoryStream 객체를 사용해서 읽은 후에 가능합니다.

 

//데이터셋 선언

System.Data.DataSet dsXML = new DataSet();

//XML형태의 문자열
string strXML = "<result ><FILEDS>ACCOUNT;^~!ENTITY;^~!APP</FILEDS><RECORDCOUNT>0</RECORDCOUNT><DATA>;^~!;^~!</DATA></result>";

//문자열을 MemoryStream객체를 사용해서 읽기
System.IO.MemoryStream streamXML = new System.IO.MemoryStream(System.Text.Encoding.Default.GetBytes(strXML));

//Stream으로부터 DataSet을 읽는다
dsXML.ReadXml(streamXML);

 

 

아래는 XmlDocument로 읽는 방법

 

//XML형태의 문자열
string strXML = "<result ><FILEDS>ACCOUNT;^~!ENTITY;^~!APP</FILEDS><RECORDCOUNT>0</RECORDCOUNT><DATA>;^~!;^~!</DATA></result>";

//XmlDocument 객체 선언

System.Xml.XmlDocument xmldocXML = new System.Xml.XmlDocument();

//LoadXML 메소드 사용해서 XML 문자열 읽기
xmldocXML.LoadXml(strXML);

신고

C# 강좌 [10. switch 문]

Posted 2009.02.07 17:03



1. switch 문
    1) switch 문
        a. if문 중에 if else 문은 조건식을 위에서 부터 순차적으로 검사를 한다.
           특정 조건에 대한 명령문이 가장 아래에 있따면 사위의 모든 조건을
           다 조사해야 하는데 명령문이 길 경우 많은 시간이 걸린다. 
           switch문은 조건 변수에 해당하는 특정 레이블로 이동한 후
           명령문을 바로 싱행한다.

using System;

namespace @while
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("원하는 값을 넣으세요!!");
            int num = Convert.ToInt32(Console.ReadLine());

            switch (num % 5)
            {
                case 1 :
                    Console.WriteLine("나머지값은 1입니다.");
                    break;
                case 2 :
                    Console.WriteLine("나머지값은 2입니다.");
                    break;
                case 3 :
                    Console.WriteLine("나머지값은 3입니다.");
                    break;
                case 4 :
                    Console.WriteLine("나머지값은 4입니다.");
                    break;
                default :
                    Console.WriteLine("5의 배수 입니다.");
                    break;
            }
        }
    }
}


C#에서는 조건 검사를 순차적으로 하지 않는다. 따라서 모든 case문
블록 끝에는 반드시 점프문인 break문이나 return문, throw문,goto문을
실행해서 제어권을 종료해줘야 한다. 또한 조건 변수에 올수 있는
자료형은 정수형, 문자형,열거형,striong형이다.
신고

C# 강좌 [9. if 문]

Posted 2009.02.07 16:15



1. if 문
    1) if 문 
        a. if문은 조건식에 따라 각각에 해당하는 명령문을 실행한다.
           프로그램을 할때 제일 많이 사용하는 제어문(조건문)이다.
           if문은 조건식을 조사해서 조건식이 참(true) 일때 나 거짓(false)일때
           의 상황을 통해 조건에 맞는 명령문에 들어가게 된다.

using System;

namespace ifstate
{
    class Program
    {
        static void Main(string[] args)
        {
            int age;

            Console.WriteLine("숫자를 입력하여주세요!!");
            age = Convert.ToInt32(Console.ReadLine());

            if (age > 18)
            {               
                Console.WriteLine("당신을 환영합니다.");
            }
            else
            {
                Console.WriteLine("성인만 입장이 가능합니다.");
            }
        }
    }
}



    2) else if 문 
        a. 순차적으로 여러 조건을 조사해서 해당되는 명령문을
           수행해야 하는경우도 있다. 이때는 if / else if / else 문을
           사용한다.

using System;

namespace elseifstate
{
    class Program
    {
        static void Main(string[] args)
        {
            int age;
            string result;

            Console.WriteLine("당신의 점수를 입력해 주세요.");
            age = Convert.ToInt32(Console.ReadLine());

            if (age >= 90)
            {               
                result = "A";
            }
            else if (age >= 80)
            {
                result = "B";
            }
            else if (age >= 70)
            {
                result = "C";
            }
            else if (age >= 60)
            {
                result = "D";
            }
            else
            {
                result = "F";
            }

            Console.WriteLine("당신의 점수는 {0} 입니다.", age);
            Console.WriteLine("당신의 학점은 {0} 입니다.", result);
        }
    }
}



신고

티스토리 툴바