Coder Social home page Coder Social logo

morrow.mojo's Introduction

Morrow.mojo: Human-friendly date & time for Mojo 🔥

Test GitHub release

Morrow is a Mojo library that provides human-friendly method for managing, formatting, and transforming dates, times, and timestamps.

Morrow is heavily inspired by arrow, and thanks for its elegant design.

Features

  • TimeZone-aware and UTC by default.
  • Support format and parse strings.
  • Support for the ISO 8601 standard.

Preparation

You have three ways to reference this library:

  • Download morrow.mojopkg from releases.
  • Clone this project and execute make build to build morrow.mojopkg.
  • Directly copy the morrow directory of this project to your own project.

Usage

from morrow import Morrow, TimeZone

# Get local date and time.
var now = Morrow.now()
print(str(now))  # 2023-10-01T20:10:25.188957+08:00

# Get UTC date and time.
var utcnow = Morrow.utcnow()
print(str(utcnow))  # 2023-10-01T20:10:25.954638+00:00

# Get local time from POSIX timestamp.
var t = Morrow.fromtimestamp(1696089600)
print(str(t))  # 2023-10-01T00:00:00.000000+08:00

# Get UTC time from POSIX timestamp.
var utc_t = Morrow.utcfromtimestamp(1696089600)
print(str(utc_t))  # 2023-09-30T16:00:00.000000+00:00

# Get ISO format.
var m = Morrow(2023, 10, 1, 0, 0, 0, 1234)
print(m.isoformat())  # 2023-10-01T00:00:00.001234

# custom format
var m = Morrow(2023, 10, 1, 0, 0, 0, 1234)
print(m.format("YYYY-MM-DD HH:mm:ss.SSSSSS ZZ"))  # 2023-10-01 00:00:00.001234 +00:00
print(m.format("dddd, DD MMM YYYY HH:mm:ss ZZZ"))  # Sunday, 01 Oct 2023 00:00:00 UTC
print(m.format("YYYY[Y]MM[M]DD[D]"))  # 2023Y10M01D

# Get ISO format with time zone.
var m_beijing = Morrow(2023, 10, 1, 0, 0, 0, 1234, TimeZone(28800, 'Bejing'))
print(m_beijing.isoformat(timespec="seconds"))  # 2023-10-01T00:00:00+08:00

# Get time zone offset.
print(TimeZone.from_utc('UTC+08:00').offset)  # 28800

# Subtract two dates.
var timedelta = Morrow(2023, 10, 2, 10, 0, 0) - Morrow(2023, 10, 1, 10, 0, 0)
print(str(timedelta))  # 1 day, 0:00:00

# Return proleptic Gregorian ordinal for the year, month and day.
var m_10_1 = Morrow(2023, 10, 1)
var ordinal = m_10_1.toordinal()
print(ordinal)  # 738794

# Construct a Morrow from a proleptic Gregorian ordinal.
var m_10_1_ = Morrow.fromordinal(ordinal)
print(str(m_10_1_))  # 2023-10-01T00:00:00.000000

# Convert Morrow to python datetime
var py_dt = now.to_py()
print(py_dt.isoformat())  # 2023-10-01T20:10:25.188957

# Convert python datetime to Morrow
var m_from_py = Morrow.from_py(py_dt)
print(m_from_py)  # 2023-10-01T20:10:25.188957

morrow.mojo's People

Contributors

prodesire avatar thatstoasty avatar

Stargazers

Morgan Titcher avatar Riko Tertsch avatar Simon Weniger avatar Tamrat Mengistu avatar X4 avatar Tommy D. Rossi avatar Martin Dudek avatar Elias Estrada avatar  avatar  avatar Dimitri avatar 壹楽 avatar Tianyi Jing avatar  avatar Lubomir Anastasov avatar Tony Vu avatar oliver avatar  avatar Mai Phước Minh Tài avatar  avatar  avatar Benny Nottonson avatar Brendan Duke avatar Cyrill avatar Igor Guerrero avatar Berkant ASLAN avatar Leandro Leites Barrios avatar Leandro Lacerda Campos avatar 0xLemon avatar  avatar  avatar Tony Tu avatar ʟᴀɴʙɪqɪᴀɴᴄᴀᴏ avatar  avatar  avatar Ryan Young avatar  avatar Liu 宇阳 avatar DFINITY avatar FR Chi avatar  avatar Steven Nelson avatar Hao Shang avatar 陈良顺 avatar 马志宇 avatar Guo Lin avatar iacker avatar Jason Sung avatar  avatar Keo avatar DooDay avatar  avatar  avatar Not Fatal Error Yet avatar Ashley En avatar  avatar snowflowersnowflake avatar PYTHONISTA avatar timothy Rasinski avatar Jingjing Wang avatar データ画家 avatar Yue avatar dianaTang avatar  avatar Dan Kelleher avatar  avatar 梁俊宇 avatar Nowwa avatar porschebz avatar  avatar  avatar Yui Takahashi avatar wannature avatar 李易连 avatar wym keith avatar 虞兮曦 avatar Gloria Legere / Food Designer / Graphic designer/ Food stylist avatar 樹都京葬 avatar Ziwen Zhao avatar Arango Barron avatar  avatar Awesome King avatar 数据娃掘 avatar  avatar  avatar Hồ Thi Tý avatar Rohit Patel avatar Token2019 avatar Yancan Chen avatar 字节和心脏只能有一个在跳动 avatar  avatar Kirsten Price avatar  avatar 筱楽 avatar ドーム avatar  avatar Fanison Tomas avatar Xuper avatar Benjamin Moll avatar Priscilla J. Nunez avatar

Watchers

 avatar  avatar Kurt Romshøj avatar 张思绮 avatar Lulu Chou avatar 涂娜娜 avatar 马志宇 avatar ドーム avatar Benjamin Moll avatar Jayden Gottlieb avatar 筱楽 avatar 両角凛 avatar Ashley En avatar Guo Lin avatar 热心市民黄先生 avatar 虞兮曦 avatar データ画家 avatar Nowwa avatar Hồ Thi Tý avatar Jason Sung avatar 李易连 avatar Marco Liang avatar Awesome King avatar Xuper avatar Not Fatal Error Yet avatar Jingjing Wang avatar

morrow.mojo's Issues

[FEATURE REQUEST] Non-ISO date formatting

My use case is to get the current timestamp in a specified format, specifically "%a, %d %b %Y %H:%M:%S %Z".

I need this to submit my project, Lightbug to the TechEmpower benchmark (they require a specific format for Date HTTP response headers).

I couldn't figure out how to this with Morrow. Perhaps there could be a format() function, like in Arrow?

Thanks for the hard work, love this project!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.