.xyz是啥意思?!好记就这么任性吗?!

mikel阅读(1222)

最近不但互联网企业疯狂上市,暴风影音创业板上市涨了32%,可见股市从来都喜欢风险,不说暴风的股价水分多少,就说这上涨的势头里有多猛,就让市场疯狂,各家纷纷去股市圈钱的时候,域名界也没闲着,这不是.xyz、.wang、.中国 等后缀域名纷纷推出的时候,让多少米农疯狂了,纷纷抢注域名,可见有了几千万美元域名成交记录的刺激下,大家都在为自己造梦!

就说.xyz是啥意思?!就为了好记就这么任性吗?!一点儿节操都没有了!某注册商都免费送了!互联网已经够乱了,域名也掺和进来了,去米农论坛去发了帖子问了,大家一般都是看看热闹就行了的态度,一致认为是鸡肋,不要听媒体报道的首日注册量突破80万的忽悠,都是不懂米的人在那抱着投机的心理在捡便宜!更何况还有很多人在大笔资金的建仓了!

不过最近域名的新闻比较劲爆,其中微软公司已经抢注了Microsoft.porn、Office.porn和Office.adult等域名。,这要做啥?!不只是品牌保护吧?!这看上去也太别扭了!从国外品牌的保护意识就可以知道为什么国内那些千万美元的域名交易是多么的憋屈了,大部分都被国外抢走了,国内的企业想要就只能买了!国内的品牌意识何时能提高上来那就不得而知了!

再说说媒体的责任感吧,总是在做枪手推波助澜,这种垃圾域名注册量的报道明明就是在混淆视听!还有没有节操可言?!也就不难解释互联网为什么那么乱了!多点儿责任感吧!

 

[转载]ASP.NET MVC 微信公共平台开发之验证消息的真实性 - 落落无尘小艾 - 博客园

mikel阅读(751)

[转载]ASP.NET MVC 微信公共平台开发之验证消息的真实性 – 落落无尘小艾 – 博客园.

  1. 在MVC Controller所在项目中添加过滤器,在过滤器中重写

    public override void OnActionExecuting(ActionExecutingContext filterContext)方法

  1. 新建数据模型

    注:服务器接收消息时,不再是signature而是msg_signature

  2. 方法重写,实现对消息的验证

    调用微信接入时验证的方法,不过参数需要小改动一下,采用新建的数据模型

  3. 在Action方法或在Controller上添加过滤器属性

  4. 代码示例
/// <summary>
    /// 微信推送消息模型
    /// </summary>
    public class WeChatMsgRequestModel
    {
        public string timestamp { get; set; }
        public string nonce { get; set; }

        public string msg_signature { get; set; }
    }

Model

public class WeChatRequestValidAttribute : ActionFilterAttribute
    {
        private const string Token = "StupidMe";

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //参数适配
            Model.FormatModel.WeChatMsgRequestModel model = new Model.FormatModel.WeChatMsgRequestModel() { nonce= filterContext.HttpContext.Request.QueryString["nonce"],msg_signature= filterContext.HttpContext.Request.QueryString["msg_signature"],timestamp= filterContext.HttpContext.Request.QueryString["timestamp"] };
            //验证
            if (CheckSignature(model))
            {
                base.OnActionExecuting(filterContext);
            }            
        }

        private bool CheckSignature(Model.FormatModel.WeChatMsgRequestModel model)
        {
            string signature, timestamp, nonce, tempStr;
            //获取请求来的参数
            signature = model.msg_signature;
            timestamp = model.timestamp;
            nonce = model.nonce;
            //创建数组,将 Token, timestamp, nonce 三个参数加入数组
            string[] array = { Token, timestamp, nonce };
            //进行排序
            Array.Sort(array);
            //拼接为一个字符串
            tempStr = String.Join("", array);
            //对字符串进行 SHA1加密
            tempStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tempStr, "SHA1").ToLower();
            //判断signature 是否正确
            if (tempStr.Equals(signature))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

Filter

/// <summary>
        /// 日志助手
        /// </summary>
        private static Common.LogHelper logger = new Common.LogHelper(typeof(HomeController));

        [Filters.WeChatRequestValid]
        public void Valid(Model.FormatModel.WeChatMsgRequestModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    //判断是否是POST请求
                    if (HttpContext.Request.HttpMethod.ToUpper() == "POST")
                    {
                        //从请求的数据流中获取请求信息
                        using (Stream stream = HttpContext.Request.InputStream)
                        {
                            byte[] postBytes = new byte[stream.Length];
                            stream.Read(postBytes, 0, (int)stream.Length);
                            string postString = System.Text.Encoding.UTF8.GetString(postBytes);
                            Handle(postString,model);
                        }
                    }
                }
                catch (Exception ex)
                {
                    logger.Error("发生异常,异常信息:" + ex.Message + ex.StackTrace);
                }
            }
        }            

Controller Code

[转载]android开发学习笔记系列(5)--fragment与viewpage - samuel.wang - 博客园

mikel阅读(1054)

[转载]android开发学习笔记系列(5)–fragment与viewpage – samuel.wang – 博客园.

前言

在前面的博客写到我针对一个项目完成了动态布局的效果,顿时感觉很爽,那么下面我针对我在前文中所讲的tabhost的实现做出一个新的方 法,tabhost基本已经被启用,现在基本使用Fragment与viewpage进行实现相同的功能,在园子里有很多这样的博客,现在我在这里呢,继 续是参考了一些博客进行了一些总结!

原因:在加载过程中,你会发现使用tabhost的内存资源比fragment大得多,因此我没有很多的安卓的截图的原因在于我一直使用真机做开发,这样虽然在博客园上很少能够图文并茂,但也使开发的安卓软件是真实可靠的,当然我没有任何对使用虚拟机开发的人有任何意见。

特别是现在我完全使用Android studio进行开发,虽然这个IDE,我自己也不太熟悉,但是使用这个IDE还是相当之方便的!还能看内存的使用情况

Fragment简介

好了,回归正途了,我们今天要讨论的是传说中Fragment,这玩意可以做好多事,就像我们的Activity一样,只要继承这个类就能激发其各种能力!说说Fragment的实质吧

Fragment自Android3.0引入的API,可以将其看作是Activity的子模块,其英文翻译是就是片段的意思!

使用fragment的布局文件

main_activity.xml

在这里,我需要规定我使用的viewpage的局域与我使用的相当于tabhost的按键布局文件

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="#f0f3f5"
    android:orientation="vertical"
    >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        >
     </android.support.v4.view.ViewPager>
    <include layout="@layout/bottom"
    />
   </LinearLayout>

include layout=”@layout/bottom”表示我包含了一个叫bottom的layout文件

先看这个布局的效果图!

在这里,我们可以知道上面的

那么bottom这个文件咋么写呢?在这里我还更改了button的样式,让页面更加好看!

   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="98px"
    android:orientation="horizontal"
    android:layout_gravity="center"
    android:background="#ffffff"
    android:layout_alignParentBottom="true"
    android:id="@+id/tab"
    >
  <LinearLayout
    android:id="@+id/tab_home"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="1"
    android:clickable="true"

    >
    <RadioButton
        android:gravity="center"
        android:id="@+id/btnhometab"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        style="@style/Widget.AppCompat.ActionButton"
        android:checked="true"
        android:button="@null"
        android:text="首页"
        android:textSize="10sp"
        android:drawableTop="@drawable/tab_home"
        android:textColor="@drawable/tab_text_color"
        android:clickable="false"
        />
</LinearLayout>
    <LinearLayout
    android:id="@+id/tab_activity"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="1"
        android:clickable="true"
    >
        <RadioButton
            android:gravity="center"
            android:id="@+id/btnactivitytab"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            style="@style/Widget.AppCompat.ActionButton"
            android:checked="true"
            android:button="@null"
            android:text="活动"
            android:textSize="10sp"
            android:drawableTop="@drawable/tab_activity"
            android:textColor="@drawable/tab_text_color"
            android:clickable="false"
            />
</LinearLayout>
    <LinearLayout
        android:id="@+id/tab_me"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_weight="1"
        android:clickable="true"
        >
        <RadioButton
            android:gravity="center"
            android:id="@+id/btnmetab"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            style="@style/Widget.AppCompat.ActionButton"
            android:checked="true"
            android:button="@null"
            android:text="我"
            android:textSize="10sp"
            android:drawableTop="@drawable/tab_me"
            android:textColor="@drawable/tab_text_color"
            android:clickable="false"
            />
    </LinearLayout>
</LinearLayout>

我们来看一下效果图:

在这里我们可以看到我将button的styke样式改成了actionButton样式,当然,还有一点要注意的是我将linearout做为了 点击事件,而底下的radiobutton使之触发效果失效(android:clickable=”false”)这样可以使没点到图片只要在这个区域 内便可以实现点击事件在textcolor这个属性我又设置了

fragment配合viewpage实现tabhost外加活动功能!

我们先来看一下我所相匹配的mainactivity文件

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.RadioButton;

import java.util.ArrayList;
import java.util.List;


public class MainActivity extends android.support.v4.app.FragmentActivity {


    /******
     *各类声明
     */
    private ViewPager viewPager;

    private FragmentPagerAdapter pagerAdapter;
    private List<Fragment> fragments;

    private LinearLayout homeTab;
    private LinearLayout activityTab;
    private LinearLayout meTab;

    private RadioButton homeRbtn;
    private RadioButton activityRbtn;
    private RadioButton meRbtn;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        GetView();//你可以先将其注释掉
        initView();
        initEvent();
        setSelect(0);
    }
    /*****
     * 动态布局实现 请参考我写的动态布局
     */
    private void GetView(){
        Autosize autosize = new Autosize();
        // 获取实际的屏幕宽度
        autosize.setScreensize(autosize.Metricwidth(this));
        LinearLayout bottom = (LinearLayout) findViewById(R.id.tab);
        autosize.llinearlayoutheight(98,bottom);
    }
    /******
     * famage 处理
     *
     */
    private void initView() {

        viewPager = (ViewPager) findViewById(R.id.viewpager);

        //bottom的tab linearlayout id
        homeTab = (LinearLayout) findViewById(R.id.tab_home);
        activityTab = (LinearLayout) findViewById(R.id.tab_activity);
        meTab = (LinearLayout) findViewById(R.id.tab_me);

        homeRbtn = (RadioButton) findViewById(R.id.btnhometab);
        activityRbtn = (RadioButton) findViewById(R.id.btnactivitytab);
        meRbtn = (RadioButton) findViewById(R.id.btnmetab);

        fragments = new ArrayList<Fragment>();
        //添加tab
        fragments.add(new FragmentHome());
        fragments.add(new FragmentActivity());
        fragments.add(new FragmentMe());
        //相应的适配器
        pagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {

            @Override
            public android.support.v4.app.Fragment getItem(int position) {
                return fragments.get(position);
            }

            @Override
            public int getCount() {
                return fragments.size();
            }
        };
        // 绑定适配器
        viewPager.setAdapter(pagerAdapter);
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                int currentItem = viewPager.getCurrentItem();
                setTab(currentItem);
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });
    }
    //设置事件
    private  void initEvent(){
        View.OnClickListener listener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                    case R.id.tab_home:
                        setSelect(0);
                        break;
                    case R.id.tab_activity:
                        setSelect(1);
                        break;
                    case R.id.tab_me:
                        setSelect(2);
                        break;
                    default:
                        break;

                }
            }
        };
        homeTab.setOnClickListener(listener);
        activityTab.setOnClickListener(listener);
        meTab.setOnClickListener(listener);

    }


    private void setTab(int i){
        resetbtn();
// 切换内容区域
        switch (i)
        {
            case 0:
                homeRbtn.setChecked(true);
                break;
            case 1:
                activityRbtn.setChecked(true);
                break;
            case 2:
                meRbtn.setChecked(true);
                break;
        }

    }
    private void setSelect(int i){
        viewPager.setCurrentItem(i);
        setTab(i);
    }

    private void resetbtn(){
        homeRbtn.setChecked(false);
        activityRbtn.setChecked(false);
        meRbtn.setChecked(false);
    }

}

相信大家对此有了一定的了解,我是通过radiobutton的不同状态来确定更改的颜色的!

tab_text_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="#64c32f"/>
    <!-- not selected -->
    <item android:state_checked="false" android:color="#000000"/>
</selector>

tab_me.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:state_checked="false"
        android:drawable="@drawable/firsttab2"/>
    <item
        android:state_checked="true"
        android:drawable="@drawable/firsttab" />
</selector>

通过这两个xml文件,我做了相应的效果!

后记

后面我将写一篇有关百度定位最新版本的使用博客,如果你喜欢我写的博客呢!求关注!

Information
作者:samuel.wang【The Horizon Blog】
出处:http://www.cnblogs.com/samuelwnb/
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任

互联网环境需要大家维护

mikel阅读(900)

互联网上各种琳琅满目的赚钱项目和广告从来就没有断过,对于小白来说满眼看去到处都是黄金,可对于了解的人来说看到的是各个项目背后心机算尽的骗术,今天去我要久久发发布推广任务的时候,看到站长在顶部醒目位置发布的《挂机骗术曝光》的文章,看后眼前一亮,

1112

具体文章内容如下:

昨天客服休息,我又客串了一下客服,不想却遇到一个会员,而这个会员差点被人骗了。

下 午的时候,一个会员联系客服号,想要发布浏览任务,问我挂机的浏览任务是否可以发布,我说可以,但骗人的挂机不允许,就让他先发网址给我看下。网址我就不 在这里公布了,只说下页面内容,号称“挂机日赚200元”,完全免费,可以马上下载软件开始挂机。对于这种骗术,我们当然一眼识破,便劝告这位会员不要发 布此类任务,不要在这种挂机软件中输入任何个人信息,更不要再相信这种项目。

下面说下这种骗术:

这 种骗术都会告诉你赚钱如何容易,完全傻瓜操作,在电脑上挂着软件就能赚钱,日赚几十元到几百元不等,总之各种诱惑,让你觉得天上真的掉馅饼了,而且知道的 人不多,你就是其中一个。但是这种软件都有一个共同点,需要你在软件内输入提现信息、绑定提现帐号或认证提现信息等等,无论哪种要求,目的都只有一个,把 你帐号中的钱转到骗子的账户。

比如昨天那个会员想要推广的挂机软件,首先要求输入支付宝帐号,然后要求提现时,支付宝帐号余额不少于100元。我心想这骗子真TM实在,说白了,骗子是怕你的帐号中没有钱供他骗,所以要求你得有100块才行,可恶的骗子!

还 有一种情况,软件会要求你认证支付宝帐号,要求你往指定的支付宝帐号中转账1分钱,但是当你转账的时候,虽然看到的是0.01元,实际转过去的,却是你支 付宝帐号的全部余额!这是为什么?因为你转账都是在软件内进行的,软件可以对网页代码进行修改,你所看到的并不是实际转账金额。

类似的骗术或许还有很多,在这里抛砖引玉,欢迎大家补充,一起曝光骗子。

难得站长能够站出来发布文章警示大家,让那些见不得光的曝光出来,其实互联网的圈子很多,大家如果都有这种积极的心态去极力维护互联网的环境良性发展,不好的就应该曝光出来,让它无处遁行,才能真正的促进国内互联网的发展!没有良好的大环境,只能让路子越走越窄!为我要久久发站长点个赞!

人穷为什么智短?

mikel阅读(946)

人穷为什么智短?因为人越穷,越害怕穷,越怕穷就越充满对风险的恐惧,越怕越畏首畏尾不敢于尝试,结果就这么穷了一辈子。

其实挺简单的,没有资本就无法承担起更大的风险,有些人会说都穷得一无所有了,还有什么可怕的?其实并不是人人都能坦然面对一无所有,越穷越怕!人性的弱点而已。

怎么摆脱智短?那就只能有大毅力、大勇气的人才能做到。

二月二狗抬头

mikel阅读(1089)

搜狗计划赴美IPO 估值超过30亿美元,终于媳妇熬成婆,再出嫁给腾讯合并了搜搜的搜索业务后,又在业绩增长的财报下上市也提上议程,媒体上各个大大的头条都是搜狗!看来今天二月二真的是狗抬头了!

20150320053248385

搜索引擎是互联网上不争的流量入口,从百度就可以看到,多少人在为百度的排名算法变化揪心自己的排名下降,竞价的暴利让这个互联网上特有的企业更加成了风口浪尖的老大哥。

移动搜索引擎市场还群雄割据,微信也不想放弃这么大的市场,加入了搜索功能对接了各种本地服务,让O2O进一步加入到微信的大家庭中,从支付到O2O再到搜索,腾讯对未来的布局可见野心有多大!搜狗的上市估计会再次推动移动互联网的搜索引擎的竞争格局,百度尽管极力维护自己的地位,微信这么大用户基数可见搜索的入口有多大,移动和传统互联网的市场完全不同,到底鹿死谁手,只能拭目以待!

未来格局还不明朗,不过现在搜狗要上市了,怎么着也罢sougou.com sougo.com 这种域名也收了吧!品牌维护是必不可少的!反正我是已经输错好几次sogou.com的域名?!都上市了,也不至于差那么几千万的域名钱吧?!

收到品牌维护从域名到商标都是必不可少的,就连国内最大的威客网站猪八戒最近也推出了商品注册、版权注册等服务的猪标局,看来从威客互联网服务开始向企业服务方向转型了,多元化了!

具体都提供什么服务,可以扫描二维码关注公众号

eccbc87e4b5ce2fe28308fd9f2a7baf3

[转载]数据字典生成工具之旅(7):NVelocity实现代码生成器 - 焰尾迭 - 博客园

mikel阅读(1458)

[转载]数据字典生成工具之旅(7):NVelocity实现代码生成器 – 焰尾迭 – 博客园.     这个系统好久没有更新了,人也慢慢变懒了,从现在开始每个月至少写三篇文章,欢迎大家监督。对了预告一下,该系列完成以后将为大家带来WebApp开发系列篇,敬请期待。先上几张图,放在文章最后面欢迎预览!

本章开始将会为大家讲解NVelocity的用法,并带领大家实现一个简单的代码生成器。

NVelocity的基础知识请参考上篇文章NVelocity语法介绍

阅读目录

NVelocity实现代码生成器

实现一款简单的代码生成器,需要先定义好代码结构。这里仅生成三层模式中的实体层,后续复杂结构代码生成大家可以自己动手写一下。

   1、 模版定义

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Mysoft.Code.Entity
{
#foreach($p in $T.Rows)##
#if($velocityCount==1)##
///
$p.get_item("table_name_c")

public class $p.get_item("table_name")
{
#end

///
#if($p.get_item("field_name_c")!="")$p.get_item("field_name_c") #else $p.get_item("field_name") #end

public#if($p.get_item("date_type")=="bigint") double#else string#end $p.get_item("field_name")
{
get;
set;
}
#end
}
}

可以看到模版很简单,最终生成的代码类似下面

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Mysoft.Code.Entity
{
///
阶段设置表

public class Pack_Stage
{

///
更新包GUID

public string StageGUID
{
get;
set;
}

///
更新包名称

public string StageName
{
get;
set;
}

///
阶段序号

public string OrderNo
{
get;
set;
}

///
是否开始合并包

public string IsHBPackage
{
get;
set;
}
}
}

2、从数据库中读取所有表和表的相关信息
SQL Sever的内置表和视图提供了许多有用信息,比如查询所有的用户表和表列信息说明。

sys.tables:用户表相关信息

sys.extended_properties:表的和列的相关描述信息

SELECT T.name AS table_name ,T.OBJECT_ID,
ISNULL(CONVERT(VARCHAR(MAX), E.value), '') AS table_name_c ,
C.name AS field_name ,
ISNULL(CONVERT(VARCHAR(MAX), D.value), '') AS field_name_c ,
ROW_NUMBER() OVER(PARTITION BY T.name ORDER BY C.colid) AS field_sequence ,
TYPE_NAME(C.xtype) AS date_type ,
(CASE WHEN EXISTS ( SELECT 1
FROM sysobjects
WHERE xtype = 'PK'
AND name IN (
SELECT name
FROM sysindexes
WHERE id = C.id
AND indid IN (
SELECT indid
FROM sysindexkeys
WHERE id = C.id
AND colid = C.colid ) ) )
THEN 1
ELSE 0
END) AS pk ,
ISNULL(C.isnullable, 1) AS isnullable ,
ISNULL(COLUMNPROPERTY(c.id, c.name, 'IsIdentity'), 0) AS isidentity
FROM sys.tables AS T
LEFT JOIN syscolumns AS C ON c.id = T.object_id
LEFT JOIN sys.extended_properties AS D ON D.major_id = T.object_id
AND D.minor_id = C.colid
AND D.major_id = C.id
LEFT JOIN sys.extended_properties AS E ON E.major_id = T.object_id
AND E.minor_id = 0

  大家可以看下上面的SQL,基本上把表的相关信息都查询出来了,下章将着重讲解这个知识点。
 3、代码生成

    有了模版和数据源就可以生成最终代码了,有不懂的可以参考上篇,这里上最终效果图。大家可以下载示例代码自行查看。

 

本章例子下载

本章总结

整个代码生成器做起来还是不困难的,前台界面搭建用到了最近比较流行的miniui,有兴趣的自己可以下载研究。实例中代码文件输出路径和数据库链接配置在了Web.Config中使用者可自行修改。

另外开发过程中遇到的几个问题也分享一下:

1.NVelocity中如何使用DataTable做为数据源

#foreach($p in $T.Rows)

($p.get_item(“date_type”)
#end

2.DataTable进行数据过滤

DataView dv = dt.DefaultView;
dv.RowFilter = “tableid='” + id + “‘”;
DataTable dt2 = dv.ToTable();

好了本章内容就这么多了,希望读完对你有所帮助!

新系列文章图片预览

     
 

工具源代码下载

目前总共有经过了七个版本的升级,现在提供最新版本的下载地址

数据字典生成工具V2.0安装程序 最新安装程序
数据字典生成工具源代码 最新源代码

学习使用

如果你使用了该工具,或者想学习该工具,欢迎加入这个小组,一起讨论数据字典生成工具、把该工具做的更强,更方便使用,一起加入147425783 QQ群

      更多数据字典生成工具资料请点击数据字典生成工具专题

[转载]Java时间日期格式转换 - EdwardLau - 博客园

mikel阅读(801)

[转载]Java时间日期格式转换 – EdwardLau – 博客园.
突然忘记了时间格式怎么转换,特此做个记录

Java时间格式转换大全

import java.text.*;
import java.util.Calendar;
public class VeDate {
/**
   * 获取现在时间
   * 
   * @return 返回时间类型 yyyy-MM-dd HH:mm:ss
   */
public static Date getNowDate() {
   Date currentTime = new Date();
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String dateString = formatter.format(currentTime);
   ParsePosition pos = new ParsePosition(8);
   Date currentTime_2 = formatter.parse(dateString, pos);
   return currentTime_2;
}
/**
   * 获取现在时间
   * 
   * @return返回短时间格式 yyyy-MM-dd
   */
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");         
DateFormat format 2= new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");         
Date date = null;    
String str = null;                  
            
// String转Date    
str = "2007-1-18";          
try {    
           date = format1.parse(str);   
           data = format2.parse(str); 
} catch (ParseException e) {    
           e.printStackTrace();    
}   
/**
   * 获取现在时间
   * 
   * @return返回字符串格式 yyyy-MM-dd HH:mm:ss
   */
public static String getStringDate() {
   Date currentTime = new Date();
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String dateString = formatter.format(currentTime);
   return dateString;
}
/**
   * 获取现在时间
   * 
   * @return 返回短时间字符串格式yyyy-MM-dd
   */
public static String getStringDateShort() {
   Date currentTime = new Date();
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
   String dateString = formatter.format(currentTime);
   return dateString;
}
/**
   * 获取时间 小时:分;秒 HH:mm:ss
   * 
   * @return
   */
public static String getTimeShort() {
   SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
   Date currentTime = new Date();
   String dateString = formatter.format(currentTime);
   return dateString;
}
/**
   * 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
   * 
   * @param strDate
   * @return
   */
public static Date strToDateLong(String strDate) {
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   ParsePosition pos = new ParsePosition(0);
   Date strtodate = formatter.parse(strDate, pos);
   return strtodate;
}
/**
   * 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss
   * 
   * @param dateDate
   * @return
   */
public static String dateToStrLong(java.util.Date dateDate) {
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String dateString = formatter.format(dateDate);
   return dateString;
}
/**
   * 将短时间格式时间转换为字符串 yyyy-MM-dd
   * 
   * @param dateDate
   * @param k
   * @return
   */
public static String dateToStr(java.util.Date dateDate) {
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
   String dateString = formatter.format(dateDate);
   return dateString;
}
/**
   * 将短时间格式字符串转换为时间 yyyy-MM-dd 
   * 
   * @param strDate
   * @return
   */
public static Date strToDate(String strDate) {
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
   ParsePosition pos = new ParsePosition(0);
   Date strtodate = formatter.parse(strDate, pos);
   return strtodate;
}
/**
   * 得到现在时间
   * 
   * @return
   */
public static Date getNow() {
   Date currentTime = new Date();
   return currentTime;
}
/**
   * 提取一个月中的最后一天
   * 
   * @param day
   * @return
   */
public static Date getLastDate(long day) {
   Date date = new Date();
   long date_3_hm = date.getTime() - 3600000 * 34 * day;
   Date date_3_hm_date = new Date(date_3_hm);
   return date_3_hm_date;
}
/**
   * 得到现在时间
   * 
   * @return 字符串 yyyyMMdd HHmmss
   */
public static String getStringToday() {
   Date currentTime = new Date();
   SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");
   String dateString = formatter.format(currentTime);
   return dateString;
}
/**
   * 得到现在小时
   */
public static String getHour() {
   Date currentTime = new Date();
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String dateString = formatter.format(currentTime);
   String hour;
   hour = dateString.substring(11, 13);
   return hour;
}
/**
   * 得到现在分钟
   * 
   * @return
   */
public static String getTime() {
   Date currentTime = new Date();
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String dateString = formatter.format(currentTime);
   String min;
   min = dateString.substring(14, 16);
   return min;
}
/**
   * 根据用户传入的时间表示格式,返回当前时间的格式 如果是yyyyMMdd,注意字母y不能大写。
   * 
   * @param sformat
   *             yyyyMMddhhmmss
   * @return
   */
public static String getUserDate(String sformat) {
   Date currentTime = new Date();
   SimpleDateFormat formatter = new SimpleDateFormat(sformat);
   String dateString = formatter.format(currentTime);
   return dateString;
}

--------------------------------------------------------------------------------------------------------------------------------

做成方法

import java.util.*;
import java.text.*;
import java.util.Calendar;

public class VeDate {
 /**
  * 获取现在时间
  * 
  * @return 返回时间类型 yyyy-MM-dd HH:mm:ss
  */
 public static Date getNowDate() {
  Date currentTime = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateString = formatter.format(currentTime);
  ParsePosition pos = new ParsePosition(8);
  Date currentTime_2 = formatter.parse(dateString, pos);
  return currentTime_2;
 }

 /**
  * 获取现在时间
  * 
  * @return返回短时间格式 yyyy-MM-dd
  */
 public static Date getNowDateShort() {
  Date currentTime = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  String dateString = formatter.format(currentTime);
  ParsePosition pos = new ParsePosition(8);
  Date currentTime_2 = formatter.parse(dateString, pos);
  return currentTime_2;
 }

 /**
  * 获取现在时间
  * 
  * @return返回字符串格式 yyyy-MM-dd HH:mm:ss
  */
 public static String getStringDate() {
  Date currentTime = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateString = formatter.format(currentTime);
  return dateString;
 }

 /**
  * 获取现在时间
  * 
  * @return 返回短时间字符串格式yyyy-MM-dd
  */
 public static String getStringDateShort() {
  Date currentTime = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  String dateString = formatter.format(currentTime);
  return dateString;
 }

 /**
  * 获取时间 小时:分;秒 HH:mm:ss
  * 
  * @return
  */
 public static String getTimeShort() {
  SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
  Date currentTime = new Date();
  String dateString = formatter.format(currentTime);
  return dateString;
 }

 /**
  * 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
  * 
  * @param strDate
  * @return
  */
 public static Date strToDateLong(String strDate) {
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  ParsePosition pos = new ParsePosition(0);
  Date strtodate = formatter.parse(strDate, pos);
  return strtodate;
 }

 /**
  * 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss
  * 
  * @param dateDate
  * @return
  */
 public static String dateToStrLong(java.util.Date dateDate) {
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateString = formatter.format(dateDate);
  return dateString;
 }

 /**
  * 将短时间格式时间转换为字符串 yyyy-MM-dd
  * 
  * @param dateDate
  * @param k
  * @return
  */
 public static String dateToStr(java.util.Date dateDate) {
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  String dateString = formatter.format(dateDate);
  return dateString;
 }

 /**
  * 将短时间格式字符串转换为时间 yyyy-MM-dd 
  * 
  * @param strDate
  * @return
  */
 public static Date strToDate(String strDate) {
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  ParsePosition pos = new ParsePosition(0);
  Date strtodate = formatter.parse(strDate, pos);
  return strtodate;
 }

 /**
  * 得到现在时间
  * 
  * @return
  */
 public static Date getNow() {
  Date currentTime = new Date();
  return currentTime;
 }

 /**
  * 提取一个月中的最后一天
  * 
  * @param day
  * @return
  */
 public static Date getLastDate(long day) {
  Date date = new Date();
  long date_3_hm = date.getTime() - 3600000 * 34 * day;
  Date date_3_hm_date = new Date(date_3_hm);
  return date_3_hm_date;
 }

 /**
  * 得到现在时间
  * 
  * @return 字符串 yyyyMMdd HHmmss
  */
 public static String getStringToday() {
  Date currentTime = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");
  String dateString = formatter.format(currentTime);
  return dateString;
 }

 /**
  * 得到现在小时
  */
 public static String getHour() {
  Date currentTime = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateString = formatter.format(currentTime);
  String hour;
  hour = dateString.substring(11, 13);
  return hour;
 }

 /**
  * 得到现在分钟
  * 
  * @return
  */
 public static String getTime() {
  Date currentTime = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateString = formatter.format(currentTime);
  String min;
  min = dateString.substring(14, 16);
  return min;
 }

 /**
  * 根据用户传入的时间表示格式,返回当前时间的格式 如果是yyyyMMdd,注意字母y不能大写。
  * 
  * @param sformat
  *            yyyyMMddhhmmss
  * @return
  */
 public static String getUserDate(String sformat) {
  Date currentTime = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat(sformat);
  String dateString = formatter.format(currentTime);
  return dateString;
 }

 /**
  * 二个小时时间间的差值,必须保证二个时间都是"HH:MM"的格式,返回字符型的分钟
  */
 public static String getTwoHour(String st1, String st2) {
  String[] kk = null;
  String[] jj = null;
  kk = st1.split(":");
  jj = st2.split(":");
  if (Integer.parseInt(kk[0]) < Integer.parseInt(jj[0]))
   return "0";
  else {
   double y = Double.parseDouble(kk[0]) + Double.parseDouble(kk[1]) / 60;
   double u = Double.parseDouble(jj[0]) + Double.parseDouble(jj[1]) / 60;
   if ((y - u) > 0)
    return y - u + "";
   else
    return "0";
  }
 }

 /**
  * 得到二个日期间的间隔天数
  */
 public static String getTwoDay(String sj1, String sj2) {
  SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
  long day = 0;
  try {
   java.util.Date date = myFormatter.parse(sj1);
   java.util.Date mydate = myFormatter.parse(sj2);
   day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
  } catch (Exception e) {
   return "";
  }
  return day + "";
 }

 /**
  * 时间前推或后推分钟,其中JJ表示分钟.
  */
 public static String getPreTime(String sj1, String jj) {
  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String mydate1 = "";
  try {
   Date date1 = format.parse(sj1);
   long Time = (date1.getTime() / 1000) + Integer.parseInt(jj) * 60;
   date1.setTime(Time * 1000);
   mydate1 = format.format(date1);
  } catch (Exception e) {
  }
  return mydate1;
 }

 /**
  * 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数
  */
 public static String getNextDay(String nowdate, String delay) {
  try{
  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  String mdate = "";
  Date d = strToDate(nowdate);
  long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60;
  d.setTime(myTime * 1000);
  mdate = format.format(d);
  return mdate;
  }catch(Exception e){
   return "";
  }
 }

 /**
  * 判断是否润年
  * 
  * @param ddate
  * @return
  */
 public static boolean isLeapYear(String ddate) {

  /**
   * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
   * 3.能被4整除同时能被100整除则不是闰年
   */
  Date d = strToDate(ddate);
  GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
  gc.setTime(d);
  int year = gc.get(Calendar.YEAR);
  if ((year % 400) == 0)
   return true;
  else if ((year % 4) == 0) {
   if ((year % 100) == 0)
    return false;
   else
    return true;
  } else
   return false;
 }

 /**
  * 返回美国时间格式 26 Apr 2006
  * 
  * @param str
  * @return
  */
 public static String getEDate(String str) {
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  ParsePosition pos = new ParsePosition(0);
  Date strtodate = formatter.parse(str, pos);
  String j = strtodate.toString();
  String[] k = j.split(" ");
  return k[2] + k[1].toUpperCase() + k[5].substring(2, 4);
 }

 /**
  * 获取一个月的最后一天
  * 
  * @param dat
  * @return
  */
 public static String getEndDateOfMonth(String dat) {// yyyy-MM-dd
  String str = dat.substring(0, 8);
  String month = dat.substring(5, 7);
  int mon = Integer.parseInt(month);
  if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) {
   str += "31";
  } else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {
   str += "30";
  } else {
   if (isLeapYear(dat)) {
    str += "29";
   } else {
    str += "28";
   }
  }
  return str;
 }

 /**
  * 判断二个时间是否在同一个周
  * 
  * @param date1
  * @param date2
  * @return
  */
 public static boolean isSameWeekDates(Date date1, Date date2) {
  Calendar cal1 = Calendar.getInstance();
  Calendar cal2 = Calendar.getInstance();
  cal1.setTime(date1);
  cal2.setTime(date2);
  int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
  if (0 == subYear) {
   if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
    return true;
  } else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
   // 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
   if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
    return true;
  } else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
   if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
    return true;
  }
  return false;
 }

 /**
  * 产生周序列,即得到当前时间所在的年度是第几周
  * 
  * @return
  */
 public static String getSeqWeek() {
  Calendar c = Calendar.getInstance(Locale.CHINA);
  String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
  if (week.length() == 1)
   week = "0" + week;
  String year = Integer.toString(c.get(Calendar.YEAR));
  return year + week;
 }

 /**
  * 获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号
  * 
  * @param sdate
  * @param num
  * @return
  */
 public static String getWeek(String sdate, String num) {
  // 再转换为时间
  Date dd = VeDate.strToDate(sdate);
  Calendar c = Calendar.getInstance();
  c.setTime(dd);
  if (num.equals("1")) // 返回星期一所在的日期
   c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
  else if (num.equals("2")) // 返回星期二所在的日期
   c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
  else if (num.equals("3")) // 返回星期三所在的日期
   c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
  else if (num.equals("4")) // 返回星期四所在的日期
   c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
  else if (num.equals("5")) // 返回星期五所在的日期
   c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
  else if (num.equals("6")) // 返回星期六所在的日期
   c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
  else if (num.equals("0")) // 返回星期日所在的日期
   c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
  return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
 }

 /**
  * 根据一个日期,返回是星期几的字符串
  * 
  * @param sdate
  * @return
  */
 public static String getWeek(String sdate) {
  // 再转换为时间
  Date date = VeDate.strToDate(sdate);
  Calendar c = Calendar.getInstance();
  c.setTime(date);
  // int hour=c.get(Calendar.DAY_OF_WEEK);
  // hour中存的就是星期几了,其范围 1~7
  // 1=星期日 7=星期六,其他类推
  return new SimpleDateFormat("EEEE").format(c.getTime());
 }
 public static String getWeekStr(String sdate){
  String str = "";
  str = VeDate.getWeek(sdate);
  if("1".equals(str)){
   str = "星期日";
  }else if("2".equals(str)){
   str = "星期一";
  }else if("3".equals(str)){
   str = "星期二";
  }else if("4".equals(str)){
   str = "星期三";
  }else if("5".equals(str)){
   str = "星期四";
  }else if("6".equals(str)){
   str = "星期五";
  }else if("7".equals(str)){
   str = "星期六";
  }
  return str;
 }

 /**
  * 两个时间之间的天数
  * 
  * @param date1
  * @param date2
  * @return
  */
 public static long getDays(String date1, String date2) {
  if (date1 == null || date1.equals(""))
   return 0;
  if (date2 == null || date2.equals(""))
   return 0;
  // 转换为标准时间
  SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
  java.util.Date date = null;
  java.util.Date mydate = null;
  try {
   date = myFormatter.parse(date1);
   mydate = myFormatter.parse(date2);
  } catch (Exception e) {
  }
  long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
  return day;
 }

 /**
  * 形成如下的日历 , 根据传入的一个时间返回一个结构 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是当月的各个时间
  * 此函数返回该日历第一行星期日所在的日期
  * 
  * @param sdate
  * @return
  */
 public static String getNowMonth(String sdate) {
  // 取该时间所在月的一号
  sdate = sdate.substring(0, 8) + "01";

  // 得到这个月的1号是星期几
  Date date = VeDate.strToDate(sdate);
  Calendar c = Calendar.getInstance();
  c.setTime(date);
  int u = c.get(Calendar.DAY_OF_WEEK);
  String newday = VeDate.getNextDay(sdate, (1 - u) + "");
  return newday;
 }

 /**
  * 取得数据库主键 生成格式为yyyymmddhhmmss+k位随机数
  * 
  * @param k
  *            表示是取几位随机数,可以自己定
  */

 public static String getNo(int k) {

  return getUserDate("yyyyMMddhhmmss") + getRandom(k);
 }

 /**
  * 返回一个随机数
  * 
  * @param i
  * @return
  */
 public static String getRandom(int i) {
  Random jjj = new Random();
  // int suiJiShu = jjj.nextInt(9);
  if (i == 0)
   return "";
  String jj = "";
  for (int k = 0; k < i; k++) {
   jj = jj + jjj.nextInt(9);
  }
  return jj;
 }

 /**
  * 
  * @param args
  */
 public static boolean RightDate(String date) {

  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  ;
  if (date == null)
   return false;
  if (date.length() > 10) {
   sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  } else {
   sdf = new SimpleDateFormat("yyyy-MM-dd");
  }
  try {
   sdf.parse(date);
  } catch (ParseException pe) {
   return false;
  }
  return true;
 }

 /***************************************************************************
  * //nd=1表示返回的值中包含年度 //yf=1表示返回的值中包含月份 //rq=1表示返回的值中包含日期 //format表示返回的格式 1
  * 以年月日中文返回 2 以横线-返回 // 3 以斜线/返回 4 以缩写不带其它符号形式返回 // 5 以点号.返回
  **************************************************************************/
 public static String getStringDateMonth(String sdate, String nd, String yf, String rq, String format) {
  Date currentTime = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  String dateString = formatter.format(currentTime);
  String s_nd = dateString.substring(0, 4); // 年份
  String s_yf = dateString.substring(5, 7); // 月份
  String s_rq = dateString.substring(8, 10); // 日期
  String sreturn = "";
  roc.util.MyChar mc = new roc.util.MyChar();
  if (sdate == null || sdate.equals("") || !mc.Isdate(sdate)) { // 处理空值情况
   if (nd.equals("1")) {
    sreturn = s_nd;
    // 处理间隔符
    if (format.equals("1"))
     sreturn = sreturn + "年";
    else if (format.equals("2"))
     sreturn = sreturn + "-";
    else if (format.equals("3"))
     sreturn = sreturn + "/";
    else if (format.equals("5"))
     sreturn = sreturn + ".";
   }
   // 处理月份
   if (yf.equals("1")) {
    sreturn = sreturn + s_yf;
    if (format.equals("1"))
     sreturn = sreturn + "月";
    else if (format.equals("2"))
     sreturn = sreturn + "-";
    else if (format.equals("3"))
     sreturn = sreturn + "/";
    else if (format.equals("5"))
     sreturn = sreturn + ".";
   }
   // 处理日期
   if (rq.equals("1")) {
    sreturn = sreturn + s_rq;
    if (format.equals("1"))
     sreturn = sreturn + "日";
   }
  } else {
   // 不是空值,也是一个合法的日期值,则先将其转换为标准的时间格式
   sdate = roc.util.RocDate.getOKDate(sdate);
   s_nd = sdate.substring(0, 4); // 年份
   s_yf = sdate.substring(5, 7); // 月份
   s_rq = sdate.substring(8, 10); // 日期
   if (nd.equals("1")) {
    sreturn = s_nd;
    // 处理间隔符
    if (format.equals("1"))
     sreturn = sreturn + "年";
    else if (format.equals("2"))
     sreturn = sreturn + "-";
    else if (format.equals("3"))
     sreturn = sreturn + "/";
    else if (format.equals("5"))
     sreturn = sreturn + ".";
   }
   // 处理月份
   if (yf.equals("1")) {
    sreturn = sreturn + s_yf;
    if (format.equals("1"))
     sreturn = sreturn + "月";
    else if (format.equals("2"))
     sreturn = sreturn + "-";
    else if (format.equals("3"))
     sreturn = sreturn + "/";
    else if (format.equals("5"))
     sreturn = sreturn + ".";
   }
   // 处理日期
   if (rq.equals("1")) {
    sreturn = sreturn + s_rq;
    if (format.equals("1"))
     sreturn = sreturn + "日";
   }
  }
  return sreturn;
 }

 public static String getNextMonthDay(String sdate, int m) {
  sdate = getOKDate(sdate);
  int year = Integer.parseInt(sdate.substring(0, 4));
  int month = Integer.parseInt(sdate.substring(5, 7));
  month = month + m;
  if (month < 0) {
   month = month + 12;
   year = year - 1;
  } else if (month > 12) {
   month = month - 12;
   year = year + 1;
  }
  String smonth = "";
  if (month < 10)
   smonth = "0" + month;
  else
   smonth = "" + month;
  return year + "-" + smonth + "-10";
 }

 public static String getOKDate(String sdate) {
  if (sdate == null || sdate.equals(""))
   return getStringDateShort();

  if (!VeStr.Isdate(sdate)) {
   sdate = getStringDateShort();
  }
  // 将“/”转换为“-”
  sdate = VeStr.Replace(sdate, "/", "-");
  // 如果只有8位长度,则要进行转换
  if (sdate.length() == 8)
   sdate = sdate.substring(0, 4) + "-" + sdate.substring(4, 6) + "-" + sdate.substring(6, 8);
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  ParsePosition pos = new ParsePosition(0);
  Date strtodate = formatter.parse(sdate, pos);
  String dateString = formatter.format(strtodate);
  return dateString;
 }

 public static void main(String[] args) throws Exception {
  try {
   //System.out.print(Integer.valueOf(getTwoDay("2006-11-03 12:22:10", "2006-11-02 11:22:09")));
  } catch (Exception e) {
   throw new Exception();
  }
  //System.out.println("sss");
 }

被电商惯坏的消费者

mikel阅读(1337)

站长网上看到一个25岁的姑娘钻京东的7天无理由退货的空子,买正品奢侈品牌的商品,到货后再退给京东从淘宝上买的高仿品,自己白白得到正品的奢侈品装大款满足虚荣心,结果被京东发现告上法庭成了诈骗犯。

从这个案例可以看出7天无理由退换货的政策真的是让商家很无奈,不过也不能说政策不好,电商本身对这种恶意退换货的订单的跟踪和统计分析也是避免发生这种情况的关键,这才明白为什么阿里为什么整个芝麻信用,在国内信用对于人们的行为的规范真得是等于零,从P2P上那些老赖们的疯狂赖账不还,然后变个身份在各个P2P网站之间频繁借款而不会被追债的现状就可以看到信用危机将严重影响互联网的未来发展,没有联网的信用系统很难规范人们的消费行为,然而要像美国那种完善的信用系统不是一天两天能够建立起来的,阿里在做百年大计的事儿,其他企业的黑名单是不是也应该共享出来呢?!

消费者很多时候不是被惯坏了,而是互联网这个号称“人傻 钱多 没人管”的世界里,没有任何规范的情况下,展露出了人性的另一面儿,完全不像现实一样有各种道德规范和监督,这就造成鱼龙混杂,让互联网企业也是叫苦不迭,多少企业曾面对过各种奇葩人性的挑战,从各种网购的评论上就可以看出来!卖家真得无语啊!

 

[转载]ProgressDialog用法_android开发_新浪博客

mikel阅读(1062)

[转载]ProgressDialog用法_android开发_新浪博客.

ProgressDialog用法  

1.新建Android项目 ProgressDialog    在包andorid.huada下建文件ProgressDialogActivity.java

2.ProgressDialogActivity.java代码如下



 package android.huada;



import android.app.Activity;

import android.app.ProgressDialog;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

public class ProgressDialogActivity extends Activity {

    

 

 ProgressDialog progressDialog;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

        progress("下载数据中", "请稍等......");

  

      

      

    }

    

    public void progress(String title,String message){

     progressDialog = new ProgressDialog(this);

     updateThread thread= new updateThread();

     progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

     progressDialog.setMessage(message);

     progressDialog.setTitle(title);

     progressDialog.setProgress(0);

     progressDialog.setMax(100);

     progressDialog.show();

     thread.start();

        }

    

    Handler handler = new Handler(){

  @Override

  public void handleMessage(Message msg) {

   // TODO Auto-generated method stub

   if(msg.what>=100){

    progressDialog.cancel();

       }

    progressDialog.setProgress(msg.what);

   super.handleMessage(msg);

  }

     

    };

    

    class updateThread extends Thread{

     public void run(){

      handler.sendEmptyMessage(0);

      try {

    updateThread.sleep(1000);

    handler.sendEmptyMessage(10);

       updateThread.sleep(1000);

       handler.sendEmptyMessage(20);

       updateThread.sleep(1000);

       handler.sendEmptyMessage(30);

       updateThread.sleep(1000);

       handler.sendEmptyMessage(40);

       updateThread.sleep(1000);

       handler.sendEmptyMessage(50);

       updateThread.sleep(1000);

       handler.sendEmptyMessage(60);

       updateThread.sleep(1000);

       handler.sendEmptyMessage(70);

       updateThread.sleep(1000);

       handler.sendEmptyMessage(80);

       updateThread.sleep(1000);

       handler.sendEmptyMessage(100);

       updateThread.sleep(1000);

       

   } catch (InterruptedException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

   }

      

     }

    }; 

}

3.配置文件main.xml代码如下

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView  

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello"

    />

</LinearLayout>