[{"data":1,"prerenderedAt":317},["ShallowReactive",2],{"project-40011250":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":43,"post_text":46,"what":47,"said":63,"maker_in_thread":154,"shape":162,"grid":166,"attempts":277,"same_week":278,"maker_shows":260,"maker_hidden":309,"reader_version":310,"card":311},"40011250","tu","Convert natural language date\u002Ftime to UTC","title","Show HN: tu – Convert natural language date\u002Ftime to UTC","https:\u002F\u002Fgithub.com\u002Fad-si\u002Ftu","github.com","adius",1712919844,2024,83,45,955,3515,28,"notable","dev_tools","command line utility","cli",[24,25,26,27,28],"natural language date","utc converter","date parsing","rust cli","time conversion","mixed",-0.229,{"positive":32,"neutral":33,"mixed":32,"critical":34},2,6,8,18,{"execution":37,"idea":40,"docs":42},{"positive":38,"critical":39},1,0,{"positive":39,"critical":41},7,{"positive":39,"critical":38},[44,39,39,39,39,45,38,45,39,39,45,39,44,45,38,39,39,39,39,39,38,38,39,38,39,39,45,45,38,45,39,38,38,39,39,39,39,39,39,39],5,3,null,{"problem":46,"audience":46,"pricing":46,"motivation":46,"time_to_build":46,"stack":48,"openness":61,"stage":62,"team_size":62},[49],{"value":50,"source":51,"evidence":52},"Rust","inferred",[53,57],{"id":54,"by":55,"text":56},"40013648","axegon_","https:\u002F\u002Fgithub.com\u002Fad-si\u002Ftu\u002Fblob\u002Fmain\u002Fsrc\u002Fmain.rs#L37 I'll definitely be using this but I'd suggest replacing print with println.",{"id":58,"by":59,"text":60},"40016393","therein","This is great synchronicity. I just recently needed this. And I needed it in a Rust project as well, can't get any better. I was trying to do stuff with chrono-english [0] and…","open_source","unknown",{"praise":64,"objections":74,"requests":100,"questions":112,"alternatives":131},[65],{"value":66,"source":67,"evidence":68},"Useful tool for inline shell use and calendar notes","commenter",[69,70],{"id":54,"by":55,"text":56},{"id":71,"by":72,"text":73},"40013479","TachyonicBytes","My use-case would be exactly the one described in the README, for example I would like to add one-off events to my calendar by writing an unstructured note. For production stuff…",[75,86,93],{"value":76,"source":67,"evidence":77},"Natural language parsing is ambiguous (e.g. 'next Saturday')",[78,82],{"id":79,"by":80,"text":81},"40013264","wolverine876","Pretty neat, though natural language is famously ambiguous. From the example, ``` tu today -> 2024-03-16T12:56:41.905455Z tu tomorrow -> 2024-03-17T12:56:41.905455Z ``` I…",{"id":83,"by":84,"text":85},"40013559","NeoTar","The classic example is 'next Saturday'. Is this the next Saturday (since today is Friday that would be tomorrow) or the Saturday of next week (i.e. eight days time). And then you…",{"value":87,"source":67,"evidence":88},"Tomorrow is computed as now plus 24 hours rather than midnight",[89],{"id":90,"by":91,"text":92},"40018875","SrslyJosh","Those examples had me puzzled. I would have expected \"tu tomorrow\" to be 00:00:00 of the next calendar day (converted to UTC), rather than \"now + 24 hours\". If I wanted a…",{"value":94,"source":67,"evidence":95},"Hand-rolled parser without formal grammar or documented special cases",[96],{"id":97,"by":98,"text":99},"40017703","RadiozRadioz","I don't think this is very well made. Uses a hand rolled parser with no formal grammar. Special case logic is not documented, e.g.…",[101,108],{"value":102,"source":67,"evidence":103},"Timezone configuration support",[104,107],{"id":105,"by":72,"text":106},"40013457","I have been searching[0] for something like this, so thank you! It doesn't quite parse my original example, `14 december 11:20`. but it parses `14 december 2024 11:20`. I was not…",{"id":58,"by":59,"text":60},{"value":109,"source":67,"evidence":110},"Print without newline issue, use println",[111],{"id":54,"by":55,"text":56},[113,120],{"value":114,"source":67,"evidence":115},"Whether it detects terminal output for colorized output",[116],{"id":117,"by":118,"text":119},"40016217","bobbylarrybobby","Can it check whether it's writing to a terminal? There are many programs that will write colorized output to a terminal but not colorized output to a file.",{"value":121,"source":67,"evidence":122},"Why not use GNU date or at instead",[123,127],{"id":124,"by":125,"text":126},"40013062","ydant","Not knocking the tool, just an alternative for people who might not be aware. GNU date almost does the same as their examples: ``` date -Is -ud 'today' -->…",{"id":128,"by":129,"text":130},"40024396","warrenm","Why not just use `at`?",[132,136,140,147],{"value":133,"source":67,"evidence":134},"GNU date",[135],{"id":124,"by":125,"text":126},{"value":137,"source":67,"evidence":138},"chrono-english",[139],{"id":58,"by":59,"text":60},{"value":141,"source":67,"evidence":142},"dateutils",[143],{"id":144,"by":145,"text":146},"40013433","smartmic","I was thinking (and trying out) exactly the same, thanks for posting! There are many reasons to reinvent the wheel, so I have no specific feelings about this one. In my case I…",{"value":148,"source":67,"evidence":149},"parse-human-relative-time",[150],{"id":151,"by":152,"text":153},"40014339","derhuerst","I built a JavaScript library for my needs: https:\u002F\u002Fgithub.com\u002Fderhuerst\u002Fparse-human-relative-time",{"comments":32,"answered":39,"key":155},[156,159],{"id":157,"text":158},"40013899","Glad you like it! =) It's supposed to be usable \"inline\", so it shouldn't print a newline. (E.g. `touch note-$(tu yesterday).md`) Some terminals have an option to still write the…",{"id":160,"text":161},"40013953","Thanks for the good suggestions! I added tracking issues at https:\u002F\u002Fgithub.com\u002Fad-si\u002Ftu\u002Fissues. I'd be very happy about a PR! ;-)",{"commenters":163,"max_depth":41,"maker_replies":32,"first_comment_mins":164,"lifespan_hours":165},32,49,77,[167,169,171,175,178,181,182,186,190,193,196,198,200,202,204,206,207,209,212,214,216,218,220,223,224,228,230,232,235,237,238,241,243,247,251,254,256,257,258,262,265,268,271,273,275],[54,39,44,168,55,39],"project\u002Fpositive\u002Fexecution",[157,39,39,170,11,38],"project\u002Fneutral\u002Fexecution",[172,39,39,173,174,39],"40013969","commenter\u002Fneutral\u002Fnone","keybored",[176,39,39,173,177,39],"40021687","emj",[179,39,39,173,180,39],"40014988","arp242",[117,39,45,170,118,39],[183,38,38,184,185,39],"40017010","project\u002Fcritical\u002Fidea","denton-scratch",[187,38,45,188,189,39],"40017478","project\u002Fneutral\u002Fdocs","38",[191,38,39,173,192,39],"40018872","burntsushi",[194,38,39,173,195,39],"40027134","erhaetherth",[197,38,39,173,192,39],"40042260",[105,32,45,199,72,39],"project\u002Fmixed\u002Fexecution",[160,32,39,201,11,38],"project\u002Fneutral\u002Fnone",[58,45,44,203,59,39],"project\u002Fpositive\u002Fnone",[79,205,45,199,80,39],4,[83,205,38,184,84,39],[208,205,39,173,189,39],"40018771",[210,205,39,173,211,39],"40019247","wruza",[213,205,39,173,189,39],"40023187",[215,205,39,173,195,39],"40027170",[217,205,39,173,189,39],"40028386",[219,205,39,173,80,39],"40020750",[221,205,38,184,222,39],"40014007","dheera",[90,205,38,184,91,39],[225,44,39,226,227,39],"40015933","other\u002Fneutral\u002Fnone","littlestymaar",[229,33,38,184,129,39],"40011510",[71,33,45,231,72,39],"project\u002Fneutral\u002Fidea",[233,33,39,226,234,39],"40013822","gmuslera",[236,33,39,226,72,39],"40014021",[128,33,45,231,129,39],[239,41,45,201,240,39],"40019638","keizo",[97,34,38,242,98,39],"project\u002Fcritical\u002Fdocs",[244,245,45,201,246,39],"40026434",9,"ranger_danger",[248,249,39,226,250,39],"40013391",10,"kelsey98765431",[252,249,39,226,253,39],"40014918","kitd",[124,255,38,184,125,39],11,[144,255,38,184,145,39],[151,255,39,226,152,39],[259,260,39,226,261,39],"40015236",12,"ghusbands",[263,260,39,173,264,39],"40015556","rottencupcakes",[266,260,39,173,267,39],"40016625","codetrotter",[269,260,39,173,270,39],"40017017","aidenn0",[272,260,39,173,267,39],"40018092",[274,260,39,173,270,39],"40018360",[276,260,39,173,267,39],"40023861",[],[279,284,289,294,299,304],{"id":280,"name":281,"points":282,"category":283},"40003710","OptiGap sensor",886,"hardware",{"id":285,"name":286,"points":287,"category":288},"40041198","gypsum",552,"learning_science",{"id":290,"name":291,"points":292,"category":293},"40017180","Mazelit",517,"games",{"id":295,"name":296,"points":297,"category":298},"40033490","markdowndown",441,"productivity",{"id":300,"name":301,"points":302,"category":303},"40067677","Effort",419,"ai",{"id":305,"name":306,"points":307,"category":308},"40028111","index advisor",417,"data",false,"v2",{"id":312,"name":5,"line":6,"ai":309,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":313,"top":18,"kw":314,"maker":11,"domain":10,"tier":19,"attempts":39,"strip":315,"url":9,"mix":316,"praise":66,"objection":76,"sub":21},40011250,-0.23,[24,25,26,27,28],"5000031300305310000011010033130110000000",[32,33,32,34],1794036652984]