c# - Inconsistent DateTime to Unix Time conversion and error on 24 hour input -
attached method using takes in list of datetime
strings, input format (i.e. yyyy-mm-dd hh:mm:ss
), , offset in form of hours.
as culture , "standard", using invariantculture
, converting times utc
.
public int unixformat3(string datetimeinput, string inputformat, int hours) { datetime result; cultureinfo provider = cultureinfo.invariantculture; result = datetime.parseexact(datetimeinput, inputformat, provider); int unixtime = (int32)(result.touniversaltime().addhours(hours).subtract(new datetime(1970, 1, 1, 0, 0, 0, 0, system.datetimekind.utc))).totalseconds; return unixtime; }
two issues said method:
- i using website comparison. if input
2014-03-18 21:00:00
, output, according method,1395190800
, converts2014-03-19 01:00:00
. has 4 hour difference. desired output this:
- if input
2014-03-18 24:00:00
, error:
the datetime represented string not supported in calendar system.globalization.gregoriancalendar.
noticeably, not allow input of 24
in hh
part. weird error nodatime
handles fine... though that's irrelevant using datetime
.
does have insight on area?
edit:
upon experimentation, removing .touniversaltime()
removes 4-hour offset.. why happening?
public int unixformat3(string datetimeinput, string inputformat, int hours) { datetime result; cultureinfo provider = cultureinfo.invariantculture; result = datetime.parseexact(datetimeinput, inputformat, provider); int unixtime = (int32)(result.addhours(hours).subtract(new datetime(1970, 1, 1, 0, 0, 0, 0, system.datetimekind.utc))).totalseconds; return unixtime; }
this document, http://www.w3.org/tr/note-datetime, cited in question how know whether given string valid utc datetime format? not list 24 valid hour value.
this document, http://en.wikipedia.org/wiki/iso8601, cited answer question list 24:00 valid time. one, http://en.wikipedia.org/wiki/12-hour_clock#confusion_at_noon_and_midnight, says 24:00 valid.
Comments
Post a Comment