연도를 4 자리에서 2 자리로 변환하고 다시 C #으로 변환
내 신용 카드 프로세서는 신용 카드 만료일로부터 두 자리 연도를 보내야합니다. 현재 처리중인 방법은 다음과 같습니다.
DropDownList
페이지에 4 자리 연도를 넣었습니다 .DateTime
CC 프로세서에 전달되는 만료 날짜가 만료되지 않았는지 확인하기 위해 필드 의 만료 날짜를 확인합니다.- 2 자리 연도를 CC 프로세서에 보냅니다 (필요한 경우). DDL 연도 값의 하위 문자열을 통해이 작업을 수행합니다.
네 자리 연도를 두 자리 연도로 변환하는 방법이 있습니까? DateTime
물체에 아무것도 보이지 않습니다 . 아니면 그대로 계속 처리해야합니까?
만료 날짜 (월 / 년)를 사용하여 DateTime 객체를 만드는 경우 다음과 같이 DateTime 변수에 ToString ()을 사용할 수 있습니다.
DateTime expirationDate = new DateTime(2008, 1, 31); // random date
string lastTwoDigitsOfYear = expirationDate.ToString("yy");
편집 : 유효성 검사 중에 DateTime 개체를 사용하는 경우 날짜에주의하십시오. 누군가 카드의 만료일로 2008 년 5 월을 선택하면 첫 번째가 아닌 5 월 말에 만료됩니다.
첫 번째 솔루션 (가장 빠름) :
yourDateTime.Year % 100
두 번째 솔루션 (내 의견으로는 더 우아함) :
yourDateTime.ToString("yy")
대답은 이미 주어졌습니다. 하지만 여기에 뭔가를 추가하고 싶습니다. 어떤 사람은 그것이 작동하지 않는다고 말했습니다.
사용 중일 수 있습니다.
DateTime.Now.Year.ToString("yy");
그것이 작동하지 않는 이유입니다. 나도 같은 실수를했다.
다음으로 변경
DateTime.Now.ToString("yy");
이것은 당신을 위해 작동합니다.
public int Get4LetterYear(int twoLetterYear)
{
int firstTwoDigits =
Convert.ToInt32(DateTime.Now.Year.ToString().Substring(2, 2));
return Get4LetterYear(twoLetterYear, firstTwoDigits);
}
public int Get4LetterYear(int twoLetterYear, int firstTwoDigits)
{
return Convert.ToInt32(firstTwoDigits.ToString() + twoLetterYear.ToString());
}
public int Get2LetterYear(int fourLetterYear)
{
return Convert.ToInt32(fourLetterYear.ToString().Substring(2, 2));
}
.NET에는 특별한 내장 기능이 없다고 생각합니다.
업데이트 : 수행해야 할 일부 유효성 검사가 누락되었습니다. 입력 된 변수의 길이 등을 확인합니다.
이 시점에서 가장 간단한 방법은 연도의 마지막 두 자리를 자르는 것입니다. 신용 카드의 경우 과거 날짜가 필요하지 않으므로 Y2K는 의미가 없습니다. 코드가 90 년 이상 계속 실행되는 경우에도 마찬가지입니다.
더 나아가서 드롭 다운 목록을 사용하는 대신 사용자가 직접 연도를 입력하도록하겠습니다. 이것은 일반적인 방법이며 대부분의 사용자가 처리 할 수 있습니다.
예를 들어 myDate.ToString ( "MM / dd / yy")과 같은 사용자 지정 형식 문자열과 함께 DateTime 개체 ToString을 사용합니다.
일부 시스템에서 컷오프가 75라고 결정하는 것을 보았습니다. 75+는 19xx이고 그 이하는 20xx입니다.
//using java script
var curDate = new Date();
var curYear = curDate.getFullYear();
curYear = curYear.toString().slice(2);
document.write(curYear)
//using java script
//using sqlserver
select Right(Year(getDate()),2)
//using sql server
//Using c#.net
DateTime dt = DateTime.Now;
string curYear = dt.Year.ToString().Substring(2,2).ToString() ;
//using c#.net
DateTime.Now.Year - (DateTime.Now.Year / 100 * 100)
올해 작동합니다. DateTime.Now.Year
1 년 동안 작동하도록 변경하십시오 .
Why not have the original drop down on the page be a 2 digit value only? Credit cards only cover a small span when looking at the year especially if the CC vendor only takes in 2 digits already.
Here is a link to a 4Guys article on how you can format Dates and Times using the ToString() method by passing in a custom format string.
http://www.aspfaqs.com/aspfaqs/ShowFAQ.asp?FAQID=181
Just in case it goes away here is one of the examples.
'Create a var. named rightNow and set it to the current date/time
Dim rightNow as DateTime = DateTime.Now
Dim s as String 'create a string
s = rightNow.ToString("MMM dd, yyyy")
Since his link is broken here is a link to the DateTimeFormatInfo class that makes those formatting options possible.
http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.aspx
It's probably a little more consistent to do something like that rather than use a substring, but who knows.
This is an old post, but I thought I'd give an example using an ExtensionMethod
(since C# 3.0), since this will hide the implementation and allow for use everywhere in the project instead or recreating the code over and over or needing to be aware of some utility class.
Extension methods enable you to "add" methods to existing types without creating a new derived type, recompiling, or otherwise modifying the original type. Extension methods are a special kind of static method, but they are called as if they were instance methods on the extended type. For client code written in C# and Visual Basic, there is no apparent difference between calling an extension method and the methods that are actually defined in a type.
public static class DateTimeExtensions
{
public static int ToYearLastTwoDigit(this DateTime date)
{
var temp = date.ToString("yy");
return int.Parse(temp);
}
}
You can then call this method anywhere you use a DateTime
object, for example...
var dateTime = new DateTime(2015, 06, 19);
var year = cob.ToYearLastTwoDigit();
The answer is quite simple:
DateTime Today = DateTime.Today; string zeroBased = Today.ToString("yy-MM-dd");
This seems to work okay for me. yourDateTime.ToString().Substring(2);
Even if a builtin way existed, it wouldn't validate it as greater than today and it would differ very little from a substring call. I wouldn't worry about it.
ReferenceURL : https://stackoverflow.com/questions/115399/converting-a-year-from-4-digit-to-2-digit-and-back-again-in-c-sharp
'programing' 카테고리의 다른 글
배열에 값이 있는지 확인 (AngularJS) (0) | 2021.01.17 |
---|---|
Android MVP : Interactor 란 무엇입니까? (0) | 2021.01.17 |
Junit 4가 기본 테스트 클래스를 무시하도록하는 방법은 무엇입니까? (0) | 2021.01.17 |
POST 매개 변수를 사용하여 UIWebView를 통해 웹 페이지로드 (0) | 2021.01.17 |
Python Imaging Library에서 크기가 조정 된 이미지의 품질을 조정하는 방법은 무엇입니까? (0) | 2021.01.17 |