GithubHelp home page GithubHelp logo

carbon-extended's Introduction

carbon-extended

Build Status Coverage Status StyleCI

Introduction

  • It can use some extended format on Carbon::format method

Installation

Using the composer to install this package

composer require lee/carbon-extended:^1.0

Usage

  • The CarbonExtended class extends Carbon and it can use createFromFormat to create the Carbon class instance and do format with extended foramts.
use Lee\CarbonExtended;

$date = '2013-03-17';
$customizedFormat = 'QTR.';

$carbonExtended = CarbonExtended::createFromFormat('Y-m-d', $date);
$result = $carbonExtended->extendedFormat($customizedFormat); // 1

Available extended date formats

  • The customized format name is refer on SAS date format
  • Here are available extended formats: (it will have more customized formats...)
customized format name references
QTR. QTR. reference
QTRR. QTRR. reference
JULDAY3. JULDAY3. reference
SAS_DATE_VALUE SAS_DATE_VALUE reference
JULIAN5. JULIAN5. reference
JULIAN7. JULIAN7. reference
PDJULG4. PDJULG4. reference
TIMEAMPM. TIMEAMPM. reference

References

SAS date documentation

carbon-extended's People

Contributors

peter279k avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

magixube

carbon-extended's Issues

Provide carbon-extended as trait/mixin

Hello,

Classes that extend Carbon like jensseggers/date or this one have one major inconvenient. You have to choose one or the other. You can't benefit of both methods of 2 or more classes that extend a first one (Carbon in this case).

A more extensible approach is to use traits and Carbon provides out of the box the mixin() method which can take as much traits as you want as long as they don't use the same methods names:

trait BeerDayCarbonTrait
{
    public function nextBeerDay()
    {
        return $this->modify('next Wednesday');
    }

    public function previousBeerDay()
    {
        return $this->modify('previous Wednesday');
    }
}

Carbon::mixin(BeerDayCarbonTrait::class);

$date = Carbon::parse('First saturday of December 2018');

echo $date->previousBeerDay();                                                 // 2018-11-28 00:00:00
echo "\n";
echo $date->nextBeerDay();                                                     // 2018-12-05 00:00:00

Try on try-carbon.herokuapp.com

And this is a backward-compatible change as you can do:

<?php

namespace Lee;

use Carbon\Carbon;

// Optionally you can deprecate it for next version
@trigger_error('CarbonExtended class is deprecated and will be removed in carbon-extended 2, use Carbon::mixin(CarbonExtendedTrait::class) instead.', E_USER_DEPRECATED);

class CarbonExtended extends Carbon
{
  use CarbonExtendedTrait;
}

And Carbon documentation has a macro section where such mixins/macros can be promoted if you want by submitting a pull-request on gh-pages branch on https://github.com/briannesbitt/Carbon

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.