diff --git a/README.md b/README.md index bbde4af..dab4812 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Parse a human readable time string into a time based value. 1. Simple ```csharp TimeStringUtil objTimeString = new TimeStringUtil(); -Int64 intTotalSeconds = objTimeString.parseToSeconds("1d 6h 30m 15s"); +Int64 intTotalSeconds = objTimeString.Parse("1d 6h 30m 15s"); // intTotalSeconds = 109815 ``` @@ -17,7 +17,7 @@ Int64 intTotalSeconds = objTimeString.parseToSeconds("1d 6h 30m 15s"); 2. Complex ```csharp TimeStringUtil objTimeString = new TimeStringUtil(); -Int64 intTotalSeconds = objTimeString.parseToSeconds("1y 2mth 4w 7d 12h 30m 15s 1000ms"); +Int64 intTotalSeconds = objTimeString.Parse("1y 2mth 4w 7d 12h 30m 15s 1000ms"); // intTotalSeconds = 39886216 ``` @@ -25,7 +25,7 @@ Int64 intTotalSeconds = objTimeString.parseToSeconds("1y 2mth 4w 7d 12h 30m 15s 3. Messy ```csharp TimeStringUtil objTimeString = new TimeStringUtil(); -Int64 intTotalSeconds = objTimeString.parseToSeconds("9 d 18hrs 27 mIn 3 6seC 1000 milli "); +Int64 intTotalSeconds = objTimeString.Parse("9 d 18hrs 27 mIn 3 6seC 1000 milli "); // intTotalSeconds = 844057 ``` @@ -33,11 +33,19 @@ Int64 intTotalSeconds = objTimeString.parseToSeconds("9 d 18hrs 27 mIn 4. Parse to TimeSpan ```csharp TimeStringUtil objTimeString = new TimeStringUtil(); -TimeSpan tsNineDays = objTimeString.parseToTimeSpan("9d"); +TimeSpan tsNineDays = objTimeString.ParseToTimeSpan("9d"); // tsNineDays = new TimeSpan(9, 0, 0, 0) ``` +5. Parse to DateTime +```csharp +TimeStringUtil objTimeString = new TimeStringUtil(); +DateTime dtEighteenDays = objTimeString.ParseToDateTime("18d"); + +// dtEighteenDays.DayOfWeek = DateTime.Now.AddDays(18).DayOfWeek +``` + 5. Custom Args ```csharp DEFAULT_OPTS objArgs = new DEFAULT_OPTS() { @@ -50,7 +58,7 @@ DEFAULT_OPTS objArgs = new DEFAULT_OPTS() { TimeStringUtil objTimeString = new TimeStringUtil(objArgs); -Int64 intTotalSeconds = objTimeString.parseToSeconds("1y"); +Int64 intTotalSeconds = objTimeString.Parse("1y"); // intTotalSeconds = 31557600 ``` diff --git a/TimeString.Tests/utTimeStringUtil.cs b/TimeString.Tests/utTimeStringUtil.cs index d3fd999..633c6c8 100644 --- a/TimeString.Tests/utTimeStringUtil.cs +++ b/TimeString.Tests/utTimeStringUtil.cs @@ -12,7 +12,7 @@ public class utTimeStringUtil { public void tmParseSimple() { TimeStringUtil objTimeString = new TimeStringUtil(); - Int64 intTotalSeconds = objTimeString.parseToSeconds("1d 6h 30m 15s"); + Int64 intTotalSeconds = objTimeString.Parse("1d 6h 30m 15s"); Assert.AreEqual(intTotalSeconds, 109815); } @@ -21,7 +21,7 @@ public void tmParseSimple() { public void tmParseComplex() { TimeStringUtil objTimeString = new TimeStringUtil(); - Int64 intTotalSeconds = objTimeString.parseToSeconds("1y 2mth 4w 7d 12h 30m 15s 1000ms"); + Int64 intTotalSeconds = objTimeString.Parse("1y 2mth 4w 7d 12h 30m 15s 1000ms"); Assert.AreEqual(intTotalSeconds, 39886216); } @@ -30,7 +30,7 @@ public void tmParseComplex() { public void tmParseMessyString() { TimeStringUtil objTimeString = new TimeStringUtil(); - Int64 intTotalSeconds = objTimeString.parseToSeconds("9 d 18hrs 27 mIn 3 6seC 1000 milli "); + Int64 intTotalSeconds = objTimeString.Parse("9 d 18hrs 27 mIn 3 6seC 1000 milli "); Assert.AreEqual(intTotalSeconds, 844057); } @@ -47,16 +47,25 @@ public void tmParseWithCustomDefaultOptions() { TimeStringUtil objTimeString = new TimeStringUtil(objArgs); - Int64 intTotalSeconds = objTimeString.parseToSeconds("1y"); + Int64 intTotalSeconds = objTimeString.Parse("1y"); Assert.AreEqual(intTotalSeconds, 31557600); } + [TestMethod] + public void tmParseDayToHours() { + TimeStringUtil objTimeString = new TimeStringUtil(); + + Int64 intOneDayTotalHours = objTimeString.Parse("1d", "h"); + + Assert.AreEqual(intOneDayTotalHours, 24); + } + [TestMethod] public void tmParseToTimeSpan() { TimeStringUtil objTimeString = new TimeStringUtil(); - TimeSpan tsNineDays = objTimeString.parseToTimeSpan("9d"); + TimeSpan tsNineDays = objTimeString.ParseToTimeSpan("9d"); Assert.AreEqual(tsNineDays, new TimeSpan(9, 0, 0, 0)); } @@ -65,7 +74,7 @@ public void tmParseToTimeSpan() { public void tmParseToDateTime() { TimeStringUtil objTimeString = new TimeStringUtil(); - DateTime dtEighteenDays = objTimeString.parseToDateTime("18d"); + DateTime dtEighteenDays = objTimeString.ParseToDateTime("18d"); Assert.AreEqual(dtEighteenDays.DayOfWeek, DateTime.Now.AddDays(18).DayOfWeek); } @@ -74,7 +83,7 @@ public void tmParseToDateTime() { public void tmParseYear() { TimeStringUtil objTimeString = new TimeStringUtil(); - Int64 intOneYearTotalSeconds = objTimeString.parseToSeconds("1y"); + Int64 intOneYearTotalSeconds = objTimeString.Parse("1y"); Assert.AreEqual(intOneYearTotalSeconds, 31557600); } @@ -83,7 +92,7 @@ public void tmParseYear() { public void tmParseMonth() { TimeStringUtil objTimeString = new TimeStringUtil(); - Int64 intTwoMonthsTotalSeconds = objTimeString.parseToSeconds("2mth"); + Int64 intTwoMonthsTotalSeconds = objTimeString.Parse("2mth"); Assert.AreEqual(intTwoMonthsTotalSeconds, 5259600); } @@ -92,7 +101,7 @@ public void tmParseMonth() { public void tmParseWeek() { TimeStringUtil objTimeString = new TimeStringUtil(); - Int64 intFourWeeksTotalSeconds = objTimeString.parseToSeconds("4w"); + Int64 intFourWeeksTotalSeconds = objTimeString.Parse("4w"); Assert.AreEqual(intFourWeeksTotalSeconds, 2419200); } @@ -101,7 +110,7 @@ public void tmParseWeek() { public void tmParseDay() { TimeStringUtil objTimeString = new TimeStringUtil(); - Int64 intSevenDaysTotalSeconds = objTimeString.parseToSeconds("7d"); + Int64 intSevenDaysTotalSeconds = objTimeString.Parse("7d"); Assert.AreEqual(intSevenDaysTotalSeconds, 604800); } @@ -110,7 +119,7 @@ public void tmParseDay() { public void tmParseHour() { TimeStringUtil objTimeString = new TimeStringUtil(); - Int64 intTwelveHoursTotalSeconds = objTimeString.parseToSeconds("12h"); + Int64 intTwelveHoursTotalSeconds = objTimeString.Parse("12h"); Assert.AreEqual(intTwelveHoursTotalSeconds, 43200); } @@ -119,7 +128,7 @@ public void tmParseHour() { public void tmParseMinute() { TimeStringUtil objTimeString = new TimeStringUtil(); - Int64 intThirtyMinutesTotalSeconds = objTimeString.parseToSeconds("30m"); + Int64 intThirtyMinutesTotalSeconds = objTimeString.Parse("30m"); Assert.AreEqual(intThirtyMinutesTotalSeconds, 1800); } @@ -128,7 +137,7 @@ public void tmParseMinute() { public void tmParseSecond() { TimeStringUtil objTimeString = new TimeStringUtil(); - Int64 intTifteenSecondsTotalSeconds = objTimeString.parseToSeconds("15s"); + Int64 intTifteenSecondsTotalSeconds = objTimeString.Parse("15s"); Assert.AreEqual(intTifteenSecondsTotalSeconds, 15); } @@ -137,7 +146,7 @@ public void tmParseSecond() { public void tmParseMilisecond() { TimeStringUtil objTimeString = new TimeStringUtil(); - Int64 intOneThousandMilisecondsTotalSeconds = objTimeString.parseToSeconds("1000ms"); + Int64 intOneThousandMilisecondsTotalSeconds = objTimeString.Parse("1000ms"); Assert.AreEqual(intOneThousandMilisecondsTotalSeconds, 1); } diff --git a/TimeString/TimeStringUtil.cs b/TimeString/TimeStringUtil.cs index 8652b6c..17dc71f 100644 --- a/TimeString/TimeStringUtil.cs +++ b/TimeString/TimeStringUtil.cs @@ -46,7 +46,7 @@ public TimeStringUtil(DEFAULT_OPTS objCustomOptions) { } } - public Int64 parseToSeconds(String strTimeString) { + public Int64 Parse(String strTimeString, String strReturnUnit = "s") { Int64 intTotalSeconds = 0; strTimeString = strTimeString.ToLower(); @@ -71,15 +71,20 @@ public Int64 parseToSeconds(String strTimeString) { } } - return intTotalSeconds; + if (!String.IsNullOrEmpty(strReturnUnit)) { + return this.convert(intTotalSeconds, strReturnUnit); + } + else { + return intTotalSeconds; + } } - public TimeSpan parseToTimeSpan(String strTimeString) { - return TimeSpan.FromSeconds(this.parseToSeconds(strTimeString)); + public TimeSpan ParseToTimeSpan(String strTimeString) { + return TimeSpan.FromSeconds(this.Parse(strTimeString)); } - public DateTime parseToDateTime(String strTimeString) { - return DateTime.Now.AddSeconds(this.parseToSeconds(strTimeString)); + public DateTime ParseToDateTime(String strTimeString) { + return DateTime.Now.AddSeconds(this.Parse(strTimeString)); } private Int64 getSeconds(String strValue, String strUnit) { @@ -111,5 +116,9 @@ private UNIT_VALUES getUnitValues() { return unitValues; } + + private Int64 convert(Int64 intTotalSeconds, String strReturnUnit) { + return Convert.ToInt64(intTotalSeconds / this.getUnitValues().units[this.getUnitKey(strReturnUnit)]); + } } } \ No newline at end of file