Как я могу получить сокращение аббревиатуры дня месяца от момента. Js & ldquo; Do & rdquo; фишка? [Дубликат]

AndroidManifest.xml пример:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name="com.pritesh.resourceidentifierexample.MainActivity"
                  android:label="@string/app_name"
                  android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <!--<category android:name="android.intent.category.LAUNCHER"/>-->
            </intent-filter>
        </activity>

        <activity-alias android:label="RED"
                        android:icon="@drawable/ic_android_red"
                        android:name="com.pritesh.resourceidentifierexample.MainActivity-Red"
                        android:enabled="true"
                        android:targetActivity="com.pritesh.resourceidentifierexample.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

        <activity-alias android:label="GREEN"
                        android:icon="@drawable/ic_android_green"
                        android:name="com.pritesh.resourceidentifierexample.MainActivity-Green"
                        android:enabled="false"
                        android:targetActivity="com.pritesh.resourceidentifierexample.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

        <activity-alias android:label="BLUE"
                        android:icon="@drawable/ic_android_blue"
                        android:name="com.pritesh.resourceidentifierexample.MainActivity-Blue"
                        android:enabled="false"
                        android:targetActivity="com.pritesh.resourceidentifierexample.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

    </application>

Затем следуйте ниже приведенному коду в MainActivity:

ImageView imageView = (ImageView)findViewById(R.id.imageView);
            int imageResourceId;
            String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
            int hours = new Time(System.currentTimeMillis()).getHours();
            Log.d("DATE", "onCreate: "  + hours);

            getPackageManager().setComponentEnabledSetting(
                    getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

            if(hours == 13)
            {
                imageResourceId = this.getResources().getIdentifier("ic_android_red", "drawable", this.getPackageName());
                getPackageManager().setComponentEnabledSetting(
                        new ComponentName("com.pritesh.resourceidentifierexample", "com.pritesh.resourceidentifierexample.MainActivity-Red"),
                        PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
            }else if(hours == 14)
            {
                imageResourceId = this.getResources().getIdentifier("ic_android_green", "drawable", this.getPackageName());
                getPackageManager().setComponentEnabledSetting(
                        new ComponentName("com.pritesh.resourceidentifierexample", "com.pritesh.resourceidentifierexample.MainActivity-Green"),
                        PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

            }else
            {
                imageResourceId = this.getResources().getIdentifier("ic_android_blue", "drawable", this.getPackageName());
                getPackageManager().setComponentEnabledSetting(
                        new ComponentName("com.pritesh.resourceidentifierexample", "com.pritesh.resourceidentifierexample.MainActivity-Blue"),
                        PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

            }

            imageView.setImageResource(imageResourceId);
7
задан James Donnelly 18 September 2015 в 13:46
поделиться

3 ответа

Я не думаю, что у MomentJS есть функция, которую вы ищете; Я бы сказал, что вы должны пойти на сайт MomentJS и представить его как предложение функции. Вы никогда не знаете, это может даже быть реализовано.

В то же время альтернативным вариантом может быть использование параметров конфигурации в MomentJS для изменения исходных строк (т. Е. Суффиксов), чтобы они включали <sup>.

См. соответствующий раздел в руководстве MomentJS: http://momentjs.com/docs/#/customization/ordinal/

Вы должны написать функцию, которая выглядит так:

moment.locale('en', {
    ordinal : function (number, token) {
        var b = number % 10;
        var output = (~~ (number % 100 / 10) === 1) ? 'th' :
            (b === 1) ? 'st' :
            (b === 2) ? 'nd' :
            (b === 3) ? 'rd' : 'th';
        return number + '<sup>' + output + '</sup>';
    }
});

Приведенный выше пример снят непосредственно из руководства MomentJS, только с измененной строкой return.

6
ответ дан Simba 15 August 2018 в 19:11
поделиться
  • 1
    Это очень интересно, я не знал, что Moment разрешен для такой настройки! – James Donnelly 18 September 2015 в 13:37
  • 2
    Эта функция в основном предназначена для локализации (т. Е. Переводов), но пригодится и для такого рода вещей. – Simba 18 September 2015 в 13:39
  • 3
    На момент 2.12 функция moment.updateLocale('en',...) – Chris Haines 6 March 2017 в 10:22

Я посмотрел на это для своего собственного проекта, но решил пойти с решением регулярного выражения.

myDate.format( 'Do MMMM YYYY' ).replace( /(\d)(st|nd|rd|th)/g, '$1<sup>$2</sup>' );

Я понимаю, что OP хотел избежать регулярного выражения, но это простое решение, которое может быть полезным другим.

10
ответ дан Mark 15 August 2018 в 19:11
поделиться
D DD        1..31       Day of month
Do          1st..31st   Day of month with ordinal
DDD DDDD    1..365      Day of year

Вы можете использовать Do в течение дня с порядковым номером.

Я использую:

moment().format('Do MMMM YYYY');
-1
ответ дан techraf 15 August 2018 в 19:11
поделиться
  • 1
    Do не извлекает порядковый номер даты, как задает вопрос, он дает дату и порядковый номер вместе. – James Donnelly 9 May 2016 в 09:12
Другие вопросы по тегам:

Похожие вопросы: