sisyphsu / dateparser

dateparser is a smart and high-performance date parser library, it supports hundreds of different formats, nearly all format that we may used. And this is also a showcase for "retree" algorithm.
MIT License
96 stars 24 forks source link

Get date format #14

Open VladShyrokyi opened 3 years ago

VladShyrokyi commented 3 years ago

Hi, I would like to be able to get the date format from a string. For example, one could add a getFormatPattern method to get a format string that can be used further for business logic. My case: I am doing a csv parser, I need to be able to define the data type in a column, this library could help me if it had this function.

sisyphsu commented 3 years ago

It's possible, dateparser could detect the format of a date string, internally.

But, the format detected is regex, is it what you want?

VladShyrokyi commented 3 years ago

Not really, need a standard according to https://www.w3.org/TR/NOTE-datetime. So that format can be reused with other libraries, possibly in other languages. For example, when the back end processes a csv document, it sends the converted data with format information that the front end processes with their libraries.

VladShyrokyi commented 3 years ago

Example to use:

var date = "1994-11-05 13:15:30"; var dateFormat = DateParserUtils.parseFormat(date); assert dateFormat = "YYYY-MM-DD hh:mm:ss";

var date = "1994-11-05"; var dateFormat = DateParserUtils.parseFormat(date); assert dateFormat = "YYYY-MM-DD";

var date = "11-05-1994 13:15:30"; var dateFormat = DateParserUtils.parseFormat(date); assert dateFormat = "DD-MM-YYYY hh:mm:ss";

var date = "11-05"; var dateFormat = DateParserUtils.parseFormat(date); assert dateFormat = "DD-MM";

var date = "04 Jul 2021 19:59:09"; var dateFormat = DateParserUtils.parseFormat(date); assert dateFormat = "DD MMM YYYY hh:mm:ss";

sisyphsu commented 3 years ago

There has too many formats supported in dateparser, I don't think it's a good idea to use it like this.

primeap commented 2 years ago

Hi @sisyphsu ,

lets say we have csv file .... we want to format a date column .... we can improve performance if we know date format

so can we get date format

thanks

akash-yadagouda commented 2 years ago

I was about to start implementing the code to get the date format given the date string.

Then I stopped because there are some test cases which are making trouble.

  1. 11/11/2022 Is it in DD/MM/YYYY format or MM/DD/YYYY?

Its better to have or follow the date/time format in a project where we are defining these.

VladShyrokyi commented 2 years ago

You can declare precedence for formats.

When somebody passes one string to the method, you check a list of formats by precedence. If need to find a format for the string list need create another method for this case. Although, format check logic can be reused.