将时间戳转换为JSON模型的可读格式

时间:2017-08-02 13:30:22

标签: javascript html json sapui5

我正在为我网站上的某些网页制作评论部分。我有一个数据库设置来记录发布的每条评论的时间戳。但是当我收到要显示的评论时,我会收到时间戳(当然)。我如何将其转换为可读格式?注释存储在JSONModel中。有没有办法在View.xml中做到这一点?或者我可以通过格式化JSON模型在控制器中执行此操作吗?

感谢您的帮助!

JavaScript控制器

onFindComments: function(oEvent)
    {
        var carriersitesModel = sap.ui.getCore().getModel("glParamCarrierSitesModel").getData();

        var sPath = jQuery.sap.getModulePath("");
        var oComModel = new JSONModel(sPath);
        oComModel = RevisionDetailsService.onGetComments(carriersitesModel.periodNbr, carriersitesModel.carrierNbr, carriersitesModel.revisionNbr);

        this.setModel(oComModel, "commentModel");
        this.getView().byId("commentsList").setBusy(false);

    }

服务

onGetComments: function(periodNbr, carrierNbr, revisionNbr) {

        var oModel = new JSONModel();
        oModel.setDefaultBindingMode("TwoWay");
        var sUrl = UrlProvider.getUrl("GET_COMMENTS");

        var param = {
            "url": window.location.href,
            "messageKey": periodNbr + "-" + carrierNbr + "-" + revisionNbr
        };

        $.ajax({
            url: sUrl,
            type: "POST",
            data: JSON.stringify(param),
            async: true,
            contentType: "application/json",
            dataType: "json",
            success: function(res) {
                console.log(res);
                oModel.setData(res);
                console.log("GET COMMENTS SUCCESS");
            },
            error: function(error){
                console.log(error);
            }
        });
        return oModel;
    }

view.xml用

<semantic:content>
        <FeedInput
        id="FeedInput"
        post="onComment"
        class="sapUiSmallMarginTopBottom" />
        <Table id="commentsList" width="auto" items="{commentModel>/returnData}" noDataText="{i18n>commentLineItemTableNoDataText}"
            busyIndicatorDelay="{detailView>/delay}" class="sapUiResponsiveMargin">
            <columns>
                <Column minScreenWidth="Phone" demandPopin="true" width="150px" style=" white-space:normal">
                    <Text text="{i18n>commentSenderColumnText}"/>
                </Column>
                <Column minScreenWidth="Phone" demandPopin="true" style="white-space:normal">
                    <Text text="{i18n>commentMessageColumnText}"/>
                </Column>
                <Column minScreenWidth="Phone" demandPopin="true" width="100px">
                    <Text text="{i18n>commentDateColumnText}"/>
                </Column>
            </columns>
            <items>
                <ColumnListItem>
                    <cells>
                        <Text text="{commentModel>createdBy}"/>
                        <Text text="{commentModel>message}"/>
                        <Text text="{commentModel>createdTime}"/>
                    </cells>
                </ColumnListItem>
            </items>
        </Table>
    </semantic:content>

2 个答案:

答案 0 :(得分:1)

对于像这样的事情,一个非常有用的javascript库是moment.js

只需将时间戳解析为片刻并使用其中一种格式化方法。

答案 1 :(得分:1)

在ui5中有不同的格式化日期(或任何其他类型):

  1. programmatically

  2. declaratively

  3. 在您的情况下,它将如下所示:

    <Text text="{
        path: 'commentModel>createdTime',
        type: 'sap.ui.model.type.Date',
        formatOptions: {style: 'medium'}
    }"/>
    

    有关不同的参数用法,请阅读官方文档。