def format_ltime(endianess, tm_format, data):
if tm_format == <NUM_LIT:0>:<EOL><INDENT>return '<STR_LIT>'<EOL><DEDENT>elif tm_format == <NUM_LIT:1> or tm_format == <NUM_LIT:2>:  <EOL><INDENT>y = data[<NUM_LIT:0>]<EOL>year = '<STR_LIT>'<EOL>if <NUM_LIT> <= y <= <NUM_LIT>:<EOL><INDENT>year = '<STR_LIT>' + str(y)<EOL><DEDENT>elif <NUM_LIT:0> <= y <= <NUM_LIT:9>:<EOL><INDENT>year = '<STR_LIT>' + str(y)<EOL><DEDENT>elif <NUM_LIT:10> <= y <= <NUM_LIT>:<EOL><INDENT>year = '<STR_LIT>' + str(y)<EOL><DEDENT>month = data[<NUM_LIT:1>]<EOL>day = data[<NUM_LIT:2>]<EOL>hour = data[<NUM_LIT:3>]<EOL>minute = data[<NUM_LIT:4>]<EOL>second = data[<NUM_LIT:5>]<EOL><DEDENT>elif tm_format == <NUM_LIT:3> or tm_format == <NUM_LIT:4>:<EOL><INDENT>if tm_format == <NUM_LIT:3>:<EOL><INDENT>u_time = float(struct.unpack(endianess + '<STR_LIT:I>', data[<NUM_LIT:0>:<NUM_LIT:4>])[<NUM_LIT:0>])<EOL>second = float(data[<NUM_LIT:4>])<EOL>final_time = time.gmtime((u_time * <NUM_LIT>) + second)<EOL><DEDENT>elif tm_format == <NUM_LIT:4>:<EOL><INDENT>final_time = time.gmtime(float(struct.unpack(endianess + '<STR_LIT:I>', data[<NUM_LIT:0>:<NUM_LIT:4>])[<NUM_LIT:0>]))<EOL><DEDENT>year = str(final_time.tm_year)<EOL>month = str(final_time.tm_mon)<EOL>day = str(final_time.tm_mday)<EOL>hour = str(final_time.tm_hour)<EOL>minute = str(final_time.tm_min)<EOL>second = str(final_time.tm_sec)<EOL><DEDENT>return "<STR_LIT>".format((MONTHS.get(month) or '<STR_LIT>'), day, year, hour, minute, second)<EOL>
Return data formatted into a human readable time stamp.

:param str endianess: The endianess to use when packing values ('>' or '<')
:param int tm_format: The format that the data is packed in, this typically
  corresponds with the value in the GEN_CONFIG_TBL (table #0) (1 <= tm_format <= 4)
:param bytes data: The packed and machine-formatted data to parse
:rtype: str